Docker는 오픈 소스 컨테이너화 플랫폼입니다. 이를 통해 개발자는 애플리케이션을 컨테이너로 패키징할 수 있습니다. 컨테이너란 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 운영체제(OS) 라이브러리 및 종속 항목과 결합하는 실행 가능한 표준 컴포넌트를 말합니다. 컨테이너는 분산형 애플리케이션의 딜리버리를 간소화하며, 이는 기업들이 클라우드 네이티브 개발 및 하이브리드 멀티클라우드 환경으로 이전하면서 점점 더 유명세를 타고 있습니다.
개발자는 Docker를 사용하지 않고도 컨테이너를 구축할 수 있지만, Docker 플랫폼을 이용하면 보다 손쉽고 보다 간편하며 보다 안전하게 컨테이너를 빌드, 배치 및 관리할 수 있습니다. Docker는 기본적으로 개발자가 단일 API를 통한 업무 절감 자동화와 간단한 명령을 사용하여 컨테이너를 빌드, 배치, 실행, 업데이트 및 중지할 수 있도록 해주는 툴킷입니다.
Docker를 상용 Docker 버전을 판매하는 회사인 Docker, Inc.(IBM 외부 링크)라고도 합니다. 또한 Docker, Inc. 및 여러 다른 기업과 개인들이 함께 참여하는 Docker 오픈 소스 프로젝트(IBM 외부 링크)라고도 합니다.
컨테이너는 Linux 커널에 빌드된 가상화 기능과 프로세스 격리를 통해 가능하게 되었습니다. 여러 기능, 즉 프로세스 간의 리소스 할당을 위한 제어 그룹(Cgroups) 및 시스템의 기타 리소스나 영역에 대한 가시성이나 프로세스 액세스를 제한하기 위한 네임스페이스 등의 기능을 사용하면 다수의 애플리케이션 컴포넌트가 호스트 운영체제의 단일 인스턴스의 리소스를 공유할 수 있습니다. 이는 마치 하이퍼바이저를 통해 다수의 가상 머신(VM)이 단일 하드웨어 서버의 CPU, 메모리 및 기타 리소스를 공유하는 것과 거의 유사한 방식입니다.
결과적으로, 컨테이너 기술은 애플리케이션 격리, 비용 효율적인 확장성, 폐기 가능성을 포함하여 VM의 모든 기능과 장점을 제공합니다. 이와 더불어, 추가적인 중요 장점은 다음과 같습니다.
오늘날 Docker가 너무나도 유명하므로, "Docker"와 "컨테이너"는 상호교환적으로 사용됩니다. 하지만 최초의 컨테이너 관련 기술은 2013년에 Docker가 일반에게 공개되기 전 몇 년 동안, 심지어 수십 년 동안(IBM 외부 링크) 사용할 수 있었습니다.
무엇보다도, 2008년에 LinuXContainers(LXC)는 Linux의 단일 인스턴스에 대한 가상화가 완벽히 가능한 Linux 커널에서 구현되었습니다. LXC가 오늘날 여전히 사용되고 있지만, Linux 커널을 사용하는 보다 새로운 기술을 사용할 수 있습니다. 최신의 오픈 소스 Linux 운영 시스템인 Ubuntu 역시 이러한 기능을 제공합니다.
Docker는 다음을 가능케 하는 기술을 사용하여 기본 Linux 컨테이너화 기능을 향상시켰습니다.
오늘날 Docker 컨테이너화는 Microsoft Windows 서버에서도 작동합니다. 그리고 대부분의 클라우드 제공자는 개발자가 Docker를 통해 컨테이너화된 애플리케이션을 빌드, 장착 및 실행할 수 있도록 지원하는 특정 서비스를 제공합니다.
이러한 이유로 인해, Docker 채택은 빠르게 확산되고 지속적으로 증가하고 있습니다. 이 글에서, Docker Inc.는 매월 1,100만명의 개발자와 130억개의 컨테이너 이미지 다운로드(IBM 외부 링크)를 보고합니다.