도커(소프트웨어)

Docker (software)
도커
원저자솔로몬 하이크스
개발자주식회사 도커
초도출시2013년 3월 20일, 11년 전(2013-03-20)[1]
안정적 방출
2024년 3월 20일 26.0.0[2]
저장소
로 적음가세요[3]
운영체제리눅스, 윈도우, macOS
플랫폼x86-64, ARM, s390x, ppc64le
유형OS 수준의 가상화
면허증.아파치-2.0 라이선스
웹사이트docker.com
구 로고

도커는 OS 수준의 가상화를 사용하여 소프트웨어를 컨테이너라는 패키지로 전달하는 서비스형 플랫폼(PaaS) 제품 세트입니다.[4] 서비스에는 무료 및 프리미엄 계층이 있습니다. 컨테이너를 호스팅하는 소프트웨어를 도커 엔진이라고 합니다.[5] 2013년에 처음 출시되었으며 Docker, Inc.에서 개발했습니다.[6]

도커(Docker)는 경량 컨테이너의 애플리케이션 배포를 자동화하여 애플리케이션이 서로 다른 환경에서 분리되어 효율적으로 작동할 수 있도록 하는 도구입니다.

배경

컨테이너는 서로 분리되어 있으며 자체 소프트웨어, 라이브러리 및 구성 파일을 번들로 제공합니다. 잘 정의된 채널을 통해 서로 통신할 수 있습니다.[7] 모든 컨테이너는 단일 운영 체제 커널의 서비스를 공유하기 때문에 가상 시스템보다 적은 리소스를 사용합니다.[5]

작동

도커는 서로 다른 인터페이스를 사용하여 리눅스 커널의 가상화 기능에 액세스할 수 있습니다.[8]

Docker는 Linux, Windows 또는 macOS 컴퓨터에서 실행할 수 있는 가상 컨테이너에 애플리케이션과 해당 종속성을 패키지화할 수 있습니다. 이를 통해 애플리케이션을 사내, 공공장소(분산 컴퓨팅, 분산 컴퓨팅 클라우드 컴퓨팅 참조) 또는 프라이빗 클라우드 등 다양한 장소에서 실행할 수 있습니다.[9] 리눅스에서 실행할 때 도커는 리눅스 커널의 리소스 격리 기능(예: cgroup 및 커널 네임스페이스)과 유니언 지원 파일 시스템(예: 오버레이)을 사용합니다.FS)[10]를 사용하면 단일 Linux 인스턴스 내에서 컨테이너를 실행할 수 있으므로 가상 시스템을 시작하고 유지하는 데 드는 오버헤드를 피할 수 있습니다.[11] macOS의 Docker는 Linux 가상 시스템을 사용하여 컨테이너를 실행합니다.[12]

도커 컨테이너는 가볍기 때문에 단일 서버 또는 가상 시스템에서 여러 컨테이너를 동시에 실행할 수 있습니다.[13] 2018년 분석에 따르면 일반적인 Docker 사용 사례는 호스트당 8개의 컨테이너를 실행하는 것이며, 분석 대상 조직의 4분의 1이 호스트당 18개 이상을 실행하는 것으로 나타났습니다.[14] 라즈베리 파이와 같은 단일 보드 컴퓨터에도 설치할 수 있습니다.[15]

리눅스 커널의 네임스페이스 지원은 대부분[16] 프로세스 트리, 네트워크, 사용자 ID 및 마운트된 파일 시스템을 포함한 응용 프로그램의 운영 환경 보기를 격리시키는 반면 커널의 cgroups는 메모리 및 CPU에 대한 리소스 제한을 제공합니다.[17] 버전 0.9 이후로 도커는 자체 구성 요소(일명)를 포함합니다. libcontainer)는 리눅스 커널이 직접 제공하는 가상화 기능을 사용할 뿐만 아니라 libvirt, LXCsystemd-nspawn을 통해 추상화된 가상화 인터페이스를 사용할 수 있습니다.[18][8][9][19]

도커는 높은 수준의 API를 구현하여 프로세스를 분리하여 실행하는 경량 컨테이너를 제공합니다.[20]

라이선스 모델

  • 도커 엔진은 Apache License 2.0에 따라 라이센스가 부여됩니다. Docker Desktop은 GNU 일반 공중 사용 허가서에 따라 라이센스가 부여된 일부 구성 요소를 배포합니다.
  • 도커 파일은 오픈 소스 라이선스로 라이선스를 받을 수 있습니다. 이러한 라이센스 문의 범위는 도커 파일만 해당되며 컨테이너 이미지는 해당되지 않습니다.

구성 요소들

서비스형 도커 소프트웨어는 다음과 같은 세 가지 구성 요소로 구성됩니다.

  • 소프트웨어: 도커 데몬, 로 불림 dockerd, 도커 컨테이너를 관리하고 컨테이너 개체를 처리하는 영구 프로세스입니다. 데몬은 도커 엔진 API를 통해 전송되는 요청을 수신합니다.[21][22] Docker 클라이언트 프로그램은 다음과 같습니다. docker, 사용자가 도커 데몬과 상호 작용할 수 있는 명령줄 인터페이스(CLI)를 제공합니다.[21][23]
  • 개체: 도커 개체는 도커에서 응용프로그램을 조립하는 데 사용되는 다양한 개체입니다. 도커 오브젝트의 주요 클래스는 이미지, 컨테이너 및 서비스입니다.[21]
    • 도커 컨테이너는 애플리케이션을 실행하는 표준화된 캡슐화 환경입니다.[24] 컨테이너는 Docker API 또는 CLI를 사용하여 관리됩니다.[21] 이미지에서 생성된 프로세스입니다.
    • 도커 이미지는 컨테이너를 작성하는 데 사용되는 읽기 전용 템플릿입니다. 이미지는 응용 프로그램을 저장하고 배송하는 데 사용됩니다.[21] 공정 이미지입니다.
    • 도커 서비스를 사용하면 여러 도커 데몬에 걸쳐 컨테이너를 확장할 수 있습니다. 그 결과는 도커 API를 통해 통신하는 협력 데몬 집합인 스웜(swarm)으로 알려져 있습니다.[21]
  • 레지스트리: 도커 레지스트리는 도커 이미지의 저장소입니다. 도커 클라이언트는 레지스터에 연결하여 사용할 이미지를 다운로드("풀")하거나 구축한 이미지를 업로드("푸시")합니다. 등록은 공개 또는 비공개일 수 있습니다. 주요 공공 등록 기관은 도커 허브입니다. 도커 허브는 도커가 이미지를 찾는 기본 레지스트리입니다.[21][25] 도커 레지스터는 이벤트를 기반으로 알림을 생성할 수도 있습니다.[26]

도커 파일의 예시:[27]

ARG CODE_VERSION= latest 부터 우분투:${CODE_VERSION} ./예시 파일을 복사합니다.txt / example file.txt ENV MY_ENV_Variable="example_값" RUN apt-get 업데이트  # 도커 볼륨에서 디렉토리 마운트 # 참고: 이는 일반적으로 'docker run' 명령에 지정됩니다. 용량 ["/내 볼륨"]  # 포트 노출(SSH의 경우 22개) 노출 22 

도구들

  • Docker Composing은 다중 컨테이너 Docker 응용프로그램을 정의하고 실행하기 위한 도구입니다.[28] YAML 파일을 사용하여 응용 프로그램의 서비스를 구성하고 단일 명령으로 모든 컨테이너의 생성 및 시작 프로세스를 수행합니다.docker-compose CLI 유틸리티를 사용하면 이미지 구축, 컨테이너 확장, 중단된 컨테이너 실행 등 여러 컨테이너에서 한 번에 명령을 실행할 수 있습니다.[29] 이미지 조작과 관련된 명령 또는 사용자 대화형 옵션은 하나의 컨테이너를 다루기 때문에 Docker Composing에서는 관련이 없습니다.[30] docker-compose.yml 파일은 응용 프로그램의 서비스를 정의하는 데 사용되며 다양한 구성 옵션을 포함합니다. 예를 들면. build 옵션은 도커 파일 경로와 같은 구성 옵션을 정의합니다. command 옵션을 사용하면 기본 도커 명령 등을 재정의할 수 있습니다.[31] 도커 컴포지트의 첫 공개 베타 버전(버전 0.0.1)은 2013년 12월 21일에 출시되었습니다.[32] 2014년 10월 16일에 첫 번째 프로덕션 준비 버전(1.0)을 제공했습니다.[33]
  • 도커 스웜(Docker Swarm)은 도커 컨테이너에 기본 클러스터링 기능을 제공하여 도커 엔진 그룹을 단일 가상 도커 엔진으로 바꿉니다.[34] Docker 1.12 이상에서는 Swarm 모드가 Docker Engine과 통합되어 있습니다.[35]docker swarm CLI[36] 유틸리티를 사용하면 스웜 컨테이너를 실행하고 검색 토큰을 만들고 클러스터의 노드를 나열하는 등의 작업을 수행할 수 있습니다.[37]docker node CLI 유틸리티를 사용하면 사용자가 스웜의 노드를 관리하기 위해 다양한 명령을 실행할 수 있습니다. 예를 들어 스웜의 노드 목록 표시, 노드 업데이트, 스웜에서 노드 제거 등이 있습니다.[38] Docker는 Raft 합의 알고리즘을 사용하여 군집을 관리합니다. Raft에 따르면 업데이트를 수행하려면 대부분의 Swarm 노드가 업데이트에 동의해야 합니다.[39][40]
  • 도커 볼륨(Docker Volume)은 데이터의 독립적인 지속성을 용이하게 하여 컨테이너가 삭제되거나 다시 생성된 후에도 데이터를 유지할 수 있도록 합니다.[41]

역사

Docker Inc.는 Y Combinator Summer 2010 스타트업 인큐베이터 그룹에서 Kamel Founadi, Solomon Hykes 및 Sebastien Pahl에[42] 의해 설립되었으며 2011년에 시작되었습니다.[43] 이 스타트업은 또한 창업자 퍼스트 코호트의 12개 스타트업 중 하나였습니다.[44] Hykes는 서비스형 플랫폼(Platform-as-a-Service) 회사인 dotCloud 내에서 내부 프로젝트로 프랑스에서 Docker 프로젝트를 시작했습니다.[45]

도커는 2013년 PyCon산타 클라라에서 대중에게 데뷔했습니다.[46] 2013년 3월 오픈소스로 출시되었습니다.[20] 당시에는 LXC를 기본 실행 환경으로 사용했습니다. 1년 후, 버전 0.9가 출시되면서 도커는 LXC를 바둑 프로그래밍 언어로 작성된 자체 구성 요소인 libcontainer로 대체했습니다.[18][47]

2017년 도커는 공개 연구 개발을 위한 모비 프로젝트를 만들었습니다.[48]

입양

  • 2013년 9월 19일: Red Hat과 Docker는 Fedora, Red Hat Enterprise Linux(RHEL) 및 OpenShift를 중심으로 공동 작업을 발표했습니다.[49]
  • 2014년 10월 15일: 마이크로소프트윈도우 서버에 도커 엔진을 통합하고 윈도우에서 도커 클라이언트 역할을 기본적으로 지원한다고 발표했습니다.[50][51]
  • 2014년 11월: 아마존 엘라스틱 컴퓨팅 클라우드(EC2)를 위한 도커 컨테이너 서비스 발표.[52]
  • 2014년 11월 10일: 도커(Docker)는 스트라토스케일(Stratscale)과의 파트너십을 발표했습니다.[53]
  • 2014년 12월 4일: IBM은 Docker와 전략적 파트너십을 체결하여 Docker가 IBM Cloud와 더욱 긴밀하게 통합될 수 있도록 지원한다고 발표했습니다.[54]
  • 2015년 6월 22일: Docker를 비롯한 여러 회사가 소프트웨어 컨테이너에 대한 새로운 공급업체 및 운영 체제 독립적인 표준을 개발하고 있다고 발표했습니다.[55][56]
  • 2015년 12월: 오라클 클라우드는 도커 컨테이너 스타트업인 StackEngine을 인수한 후 도커 컨테이너 지원을 추가했습니다.[57]
  • 2016년 4월: 독립 소프트웨어 공급업체인 Windocks는 Windows Server 2012 R2 및 Server 2016을 지원하는 Docker의 오픈 소스 프로젝트 포트를 Windows에 출시했으며 모든 버전의 SQL Server 2008이 출시되었습니다.[58]
  • 2016년 5월: 분석 결과 Docker의 주요 기여자로 다음과 같은 조직이 나타났습니다. 도커팀, 시스코, 구글, 화웨이,[59] IBM, 마이크로소프트, 레드햇.
  • 2016년 6월 8일: 마이크로소프트는 도커를 이제 윈도우 10에서 기본적으로 사용할 수 있다고 발표했습니다.[60]
  • 2017년 1월: LinkedIn 프로필 언급을 분석한 결과 2016년 Docker의 존재감이 160% 증가한 것으로 나타났습니다.[61]
  • 2019년 5월 6일: 마이크로소프트는 리눅스용 윈도우 서브시스템(WSL)의 두 번째 버전을 발표했습니다. Docker, Inc.는 WSL 2에서 실행되는 Windows용 Docker 버전 작업을 시작했다고 발표했습니다.[62] 특히, 이것은 Docker가 Windows 10 Home (이전에는 Hyper-V를 사용했기 때문에 Windows Pro 및 Enterprise로 제한됨)에서 실행될 수 있음을 의미합니다.
  • 2020년 8월: 마이크로소프트는 윈도우 10 버전 1903 및 1909에 대한 WSL2의 백포트를 발표했습니다(이전에는 2004 버전에서만 WSL2를 사용할 수 있었습니다).[63] 도커 개발자들은 이러한 플랫폼에 도커를 사용할 수 있다고 발표했습니다.[64]
  • 2021년 8월: Windows 및 MacOS용 Docker Desktop은 더 이상 엔터프라이즈 사용자에게 무료가 아닙니다. Docker는 대규모 비즈니스 고객을 위한 무료 Docker Desktop 사용을 종료하고 무료 요금제를 개인 요금제로 대체했습니다. 리눅스 배포판의 도커는 영향을 받지 않습니다.[65]
  • 2023년 12월: 도커는 테스트 기능 확장을 위해 AtomicJar를 인수했습니다.[66]

참고 항목

참고문헌

  1. ^ Barbier, Julien (June 9, 2014). "It's Here: Docker 1.0". Docker. Docker, Inc. Retrieved September 30, 2019.
  2. ^ "v26.0.0". March 20, 2024. Retrieved March 20, 2024.
  3. ^ "Docker source code". docker/distribution repo. Docker, Inc. October 12, 2015. Retrieved October 24, 2015 – via GitHub.
  4. ^ O'Gara, Maureen (July 26, 2013). "Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud". SYS-CON Media. Archived from the original on September 13, 2019.
  5. ^ a b "What is a Container?". docker.com. Docker, Inc. Retrieved May 13, 2019.
  6. ^ Ratan, Vivek (February 8, 2017). "Docker: A Favourite in the DevOps World". Open Source For U. Retrieved June 14, 2017.
  7. ^ "Docker frequently asked questions (FAQ)". March 2, 2019.
  8. ^ a b "Docker 0.9: Introducing execution drivers and libcontainer". Docker Blog. Docker, Inc. March 10, 2014. Retrieved January 20, 2015.
  9. ^ a b Noyes, Katherine (August 1, 2013). "Docker: A 'Shipping Container' for Linux Code". Linux.com. Archived from the original on August 8, 2013. Retrieved August 9, 2013.
  10. ^ "Select a storage driver documentation". Docker documentation. Archived from the original on December 6, 2016. Retrieved December 7, 2016.
  11. ^ "Docker Documentation: Kernel Requirements". docker.readthedocs.org. January 4, 2014. Archived from the original on August 21, 2014. Retrieved August 20, 2014.
  12. ^ "Get started with Docker for Mac". docker.com. Docker, Inc. Retrieved September 27, 2018.
  13. ^ K., Chris (14 January 2019). "Lightweight Windows containers: Using Docker process isolation in Windows 10". Poweruser. Retrieved 2 August 2019. more "lightweight" real containers (via so called process-isolation), where the containerized processes are running directly on the host system — all processes on the host and in the containers are sharing the same Windows kernel. This is similar to how containers on Linux work.
  14. ^ "8 surprising facts about real Docker adoption". Datadog. June 2018. Retrieved September 4, 2019.
  15. ^ Gupta, Devender (October 13, 2022). "How to Install Docker on Raspberry Pi". Gizmoxo. Retrieved October 15, 2022.
  16. ^ Walsh, Dan (September 15, 2014). "Yet Another Reason Containers Don't Contain: Kernel Keyrings". projectatomic.io. Retrieved April 13, 2015.
  17. ^ "Limit a container's resources". Docker Documentation. Retrieved March 7, 2018.
  18. ^ a b Vaughan-Nichols, Steven J. (June 11, 2014). "Docker libcontainer unifies Linux container powers". ZDNet. Retrieved July 30, 2014.
  19. ^ "libcontainer – reference implementation for containers". docker/libcontainer repo. Docker, Inc. Retrieved July 30, 2014 – via GitHub.
  20. ^ a b Avram, Abel (March 27, 2013). "Docker: Automated and Consistent Software Deployments". InfoQ. Retrieved August 9, 2013.
  21. ^ a b c d e f g "Docker overview". Docker Documentation. Docker, Inc. Retrieved February 26, 2018.
  22. ^ "dockerd". Docker Documentation. Docker, Inc. Retrieved February 26, 2018.
  23. ^ "Use the Docker command line". Docker Documentation. Docker, Inc. Retrieved February 26, 2018.
  24. ^ "The Docker Ecosystem: An Introduction to Common Components". www.digitalocean.com. Retrieved February 26, 2018.
  25. ^ "About Registry". Docker Documentation. Docker, Inc. Retrieved February 26, 2018.
  26. ^ "Work with notifications". March 2, 2019.
  27. ^ "Dockerfile reference". Docker Documentation. November 14, 2023. Retrieved November 30, 2023.
  28. ^ "Overview of Docker Compose". Docker Documentation. Docker, Inc. Retrieved July 6, 2017.
  29. ^ "Compose command-line reference". Docker Documentation. Docker, Inc. Retrieved February 28, 2018.
  30. ^ "Orchestrate Containers for Development with Docker Compose". via @codeship. May 27, 2015. Retrieved February 28, 2018.
  31. ^ "Compose file version 3 reference". Docker Documentation. Docker, Inc. Retrieved February 28, 2018.
  32. ^ Firshman, Ben (December 21, 2013). "Release 0.0.1". docker/compose. Docker, Inc. – via GitHub.
  33. ^ Prasad, Aanand (October 16, 2014). "Release 1.0.0". docker/compose. Docker, Inc. – via GitHub.
  34. ^ "8 Container Orchestration Tools to Know". Linux.com. April 12, 2017. Retrieved July 6, 2017.
  35. ^ "Docker Swarm". Docker Documentation. Docker, Inc. Retrieved July 6, 2017.
  36. ^ "Docker swarm". June 4, 2021.
  37. ^ "Swarm command-line reference". Docker Documentation. Docker, Inc. Retrieved February 28, 2018.
  38. ^ "docker node". Docker Documentation. Retrieved February 28, 2018.
  39. ^ "Docker Swarm 101". aquasec.com. Retrieved February 28, 2018.
  40. ^ "Raft Consensus Algorithm". raft.github.io. Retrieved February 28, 2018.
  41. ^ "Docker Desktop & Docker Guides". Docker Guide. April 25, 2021. Archived from the original on April 25, 2021. Retrieved April 25, 2021.
  42. ^ Hykes, Solomon (March 28, 2018). "Au Revoir". docker.com. Archived from the original on January 12, 2021. Retrieved January 23, 2021.
  43. ^ "About the dotCloud Platform". dotCloud. Archived from the original on July 2, 2014. Retrieved June 23, 2019.
  44. ^ Seigler, MG (January 10, 2011). "Founders Den: A Private Clubhouse For Entrepreneurs Opens In San Francisco". TechCrunch. Archived from the original on March 29, 2016. Retrieved February 2, 2021.
  45. ^ "One home for all your apps". dotcloud.com. Archived from the original on May 17, 2014. Retrieved May 8, 2014.
  46. ^ "The future of Linux Containers". DotCloud Channel. Retrieved July 13, 2018 – via YouTube.
  47. ^ Swan, Chris (March 13, 2014). "Docker drops LXC as default execution environment". InfoQ. Retrieved January 20, 2015.
  48. ^ "Demystifying the Relationship Between Moby & Docker – Welcome to Collabnix". May 6, 2017.
  49. ^ "DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift". TechCrunch. September 19, 2013. Retrieved January 20, 2014.
  50. ^ Foley, Mary Jo (October 15, 2014). "Docker container support coming to Microsoft's next Windows Server release". ZDNet. Retrieved October 16, 2014.
  51. ^ Guthrie, Scott (October 15, 2014). "Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure". ScottGu's Blog. Microsoft. Retrieved January 12, 2015.
  52. ^ Barr, Jeff (November 13, 2014). "Amazon EC2 Container Service (ECS) – Container Management for the AWS Cloud". Amazon Web Services Blog. Retrieved April 29, 2017.
  53. ^ Rath, John (November 10, 2014). "Stratoscale Raises $32M to Build Docker-Supporting OpenStack Clouds on Commodity Servers". Retrieved January 3, 2016.
  54. ^ "IBM and Docker Announce Strategic Partnership to Deliver Enterprise Applications in the Cloud and On Prem". IBM. December 4, 2014. Retrieved April 20, 2015.
  55. ^ Lardinois, Frederic (June 22, 2015). "Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard". TechCrunch. Retrieved August 8, 2015.
  56. ^ Siluk, Shirley (June 22, 2015). "Docker, Tech Giants Team on Open Container Project". cio-today.com. Archived from the original on September 23, 2015. Retrieved August 8, 2015.
  57. ^ McLaughlin, Kevin (December 22, 2015). "Oracle Acquires Docker Container Startup StackEngine, Plans Austin-Based Cloud Computing Center". CRN. Retrieved January 13, 2022.
  58. ^ Yegulalp, Serdar (April 4, 2016). "Windocks does what Docker and Microsoft can't do". InfoWorld. Retrieved October 27, 2018.
  59. ^ "Docker – Updated project statistics". GitHub Gist. Retrieved August 22, 2016.
  60. ^ Sarkar, Dona (June 8, 2016). "Announcing Windows 10 Insider Preview Build 14361". Windows Blogs. Microsoft. Retrieved June 19, 2016.
  61. ^ Mullany, Michael. "Docker Momentum Analysis 2016". LinkedIn Pulse. Retrieved January 5, 2017.
  62. ^ Vaughan-Nichols, Steven (June 18, 2019). "Docker embraces Windows Subsystem for Linux 2". ZDNet. CBS Interactive.
  63. ^ "WSL 2 Support is coming to Windows 10 Versions 1903 and 1909". Windows Command Line. August 20, 2020. Retrieved August 21, 2020.
  64. ^ "Docker Desktop & WSL 2 - Backport Update". Docker Blog. August 20, 2020. Retrieved August 21, 2020.
  65. ^ Carey, Scott (August 31, 2021). "Docker Desktop is no longer free for enterprise users". InfoWorld. Retrieved October 18, 2021.
  66. ^ Miller, Ron (December 11, 2023). "Docker acquires AtomicJar, a testing startup that raised $25M in January". TechCrunch. Retrieved December 13, 2023.

외부 링크