<colcolor=#1D63ED><colbgcolor=#fff,#1f2023> Docker | |
개발자 | 솔로몬 하익스 |
발표일 | 2013년 3월 13일 ([age(2013-03-13)]년 전) |
프로그래밍 언어 | Go |
라이센스 | GPLv2 |
| |
[clearfix]
1. 개요
초기에 LXC(리눅스 컨테이너스)라는 커널 컨테이너 기술을 이용하여 만든 컨테이너 기술 중 하나.[1] 물론 지금은 LXC에 전적으로 의존하고 있지는 않으나, LXC 옵션 등을 사용할 수 있는 것을 감안한다면 아예 분리된 별개의 기술이라고 할 수는 없다. #
2015년 이래 리눅스 컨테이너 기술 부분에서 사실상 업계 표준이 되어 가고 있다.
2. 특징
- 운영체제를 가상화하지 않는 컨테이너 기술이니만큼 가상머신에 비해서 가벼우며, VM을 포함하여 한 대의 서버에 여러 개의 서비스를 구동하기 좋다.
- 보안상, 서비스가 털리더라도 원래의 서버에 영향을 미치기가 쉽지 않은 격리된 구조이니만큼, 가상화의 장점을 상당 부분 활용할 수 있다.
- 가상머신(VM)들과 달리, 기존 리눅스 자원(디스크, 네트워크 등)을 그대로 활용할 수 있어서 여러 서비스들을 한 서버에 때려 박아 돌리기가 좋은 편이다.
- 리눅스 커널 2.6.32-431 이상에서 지원한다. CentOS 기준으로는 CentOS 6.5 이상을 요구한다.
- 다른 컨테이너의 환경을 쉽게 그대로 재현할 수 있는 이미지를 제공한다.
- 레이어로 구성되어 있으며 이를 유니온 마운트해서 관리되고 있다.
- 다양한 이미지가 레이어를 공유할 수 있기 때문에 효율적으로 저장공간을 활용할 수 있다.
- 이미지를 제공하는 원격 저장소가 있어서 누구나 쉽게 이미지를 가져올 수 있다.
3. 현황
구글, 아마존, 마이크로소프트에서도 도커를 지원하고 있다. 그렇기에 가장 큰 장점으로는 사실상 업계 표준이니만큼 사용자들이 작성해둔 소프트웨어 패키지/이미지들이 넘쳐나고 있어서 접근성과 사용하기 좋다는 장점이 있으며 최근에는 클라우드 컴퓨팅에 대해 교육을 진행하는 여러 교육기관에서도 도커에 대한 커리큘럼을 추가하는 경우가 많아지고 있다.대표적인 NAS 제조사인 시놀로지도 고급형 모델에 한하여 Docker 기능을 지원하고 있다.
EFM 네트웍스에서 ipTIME이라는 브랜드로 제조하는 Intel Jasper Lake 계열의 NAS가 업데이트를 통하여 Docker를 지원한다.#
리눅스에서 유래한 기술이지만 윈도우에서 리눅스 컨테이너를 구동하거나 윈도우 컨테이너를 구동할 수도 있다.링크 다만, 리눅스 컨테이너 기술이니만큼 윈도우에서는 WSL2 안에, macOS에서는 VM 위에 올라가는데, 윈도우의 경우 WSL2가 Hyper-V를 사용하기 때문에 VirtualBox나 VMware에서 VT-X를 사용할 수 없게 된다. 대신 윈도우 자체 VM인 Hyper-V 관리자를 통해 가상머신을 이용할 수 있지만 기능이 다소 부실한 감이 있다. 본인이 필요하다면 직접 지원 기능을 확인해보고 판단하자.
Docker-compose는 도커 컨테이너를 YAML 스크립트 방식으로 배포 가능케 해주는 CUI 도구다. 윈도우 버전 기준으로 설치시 함께 설치된다.
4. 관련 유틸리티
도커가 서버 시장에서 대중화되면서 각종 다양한 모니터링 및 제어 툴이 나오고 있다. 대부분은 도커 이미지 형태로 배포된다. 유명한 것들만 열거한다.- Docker Desktop - 공식 프론트엔드다.
- Kubernetes
- Dokemon
- Portainer
- Unraid, 시놀로지 등 각종 NAS의 전용 도커 관리자
- watchtower - 도커 자동 업데이트 어시스턴트다.
5. 관리형 서비스
CaaS (Container as a Service)를 구현한 사례도 존재한다. 아마존 웹 서비스의 Elastic Container Service (ECS) 및 App Runner, Microsoft Azure의 Azure Container Apps (ACA), Google Cloud Platform의 Google Kubernetes Engine (GKE)가 있다.6. 기타
비슷한 프로그램으로 Docker의 문제점을 보완한 Podman이 있다. Docker와는 달리 기본적으로 관리자 권한 없이도 작동이 가능하며, Docker와 100% 호환된다는 장점이 있다.최근에는 러시아의 유료 기술지원 계약을 일방적으로 파기하고 무료버전조차 다운로드 받지 못하게끔 다운로드 기능을 차단하였다.
7. 참고
[1] 컨테이너를 설명하자면 '운영체제 수준 가상화'. Linux의 cgroup 과 namespace를 이용하여 호스트 OS와 별개로 동작하는 가상머신 비스무리한 것이라고 생각하면 된다.