본문 바로가기
Docker/docs

[Docker] [docs] 01. get-stated

by NJ94 2023. 11. 30.

https://docs.docker.com/get-started/

 

Overview of the get started guide

Get started with the Docker basics in this comprehensive overview, You'll learn about containers, images, and how to containerize your first application.

docs.docker.com

 

Docker

도커(Docker)는 컨테이너화된 애플리케이션을 만들고 관리하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션과 애플리케이션을 실행하는 데 필요한 모든 것을 패키징하는 소프트웨어의 표준화된 단위입니다. 이것은 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 모든 것을 포함합니다. 이러한 컨테이너는 호스트 환경에서 격리되어 실행되므로 독립적으로 이동 가능하고 일관성 있게 작동할 수 있습니다.

 

도커는 다음과 같은 기능을 제공합니다:

 

  1. 컨테이너화: 도커는 애플리케이션과 그 실행 환경을 컨테이너로 패키징하여, 호스트 시스템에서 독립적으로 실행할 수 있게 해줍니다. 각각의 컨테이너는 필요한 모든 것을 갖추고 있어 이식성과 확장성을 높여줍니다.
  2. 이식성 및 확장성: 도커 컨테이너는 무거운 가상 머신 대신 가볍고 이식 가능한 단위로서, 여러 환경에서 일관되게 실행될 수 있습니다. 이를 통해 개발 환경과 프로덕션 환경 사이의 일관성을 유지하고, 필요에 따라 애플리케이션을 확장시킬 수 있습니다.
  3. 이미지 관리: 도커는 컨테이너를 만들기 위한 이미지를 관리합니다. 이미지는 컨테이너 실행에 필요한 파일 및 설정을 포함하고 있으며, 이러한 이미지들은 버전 관리되어 특정 시점의 상태로 복원할 수 있습니다.
  4. 자원 최적화: 도커는 가상화를 이용하여 자원을 효율적으로 활용합니다. 호스트 시스템의 자원을 컨테이너 간에 나누어 사용하고, 더 많은 어플리케이션을 실행할 수 있도록 합니다.
  5. 클라우드 호환성: 대부분의 클라우드 플랫폼에서 도커 컨테이너를 지원하므로, 애플리케이션을 클라우드로 쉽게 이전하고 실행할 수 있습니다.
도커는 애플리케이션과 그 실행 환경을 컨테이너로 감싸고 관리함으로써 이식성, 확장성, 자원 효율성 등을 제공하여 개발과 배포 프로세스를 향상시키는 데 도움을 줍니다.

 

 

도커를 사용하여 애플리케이션을 관리하는 시스템 구조는 일반적으로 다음과 같이 구성될 수 있습니다:

 

https://www.docker.com/resources/what-container/

 

  1. Host Operating System (호스트 운영 체제): 호스트 운영 체제는 도커 엔진을 실행하기 위한 기본적인 운영 체제입니다. 도커는 호스트 운영 체제 위에서 동작하며, 호스트 시스템의 리소스를 활용하여 컨테이너를 실행하고 관리합니다.
  2. Docker Engine (도커 엔진): 도커 엔진은 컨테이너를 생성하고 실행하는 데 사용되는 핵심 도커 플랫폼입니다. 컨테이너를 생성하고 실행하는 역할을 수행하며, 도커 API를 통해 컨테이너 및 이미지 관리 작업을 수행합니다.
  3. Infrastructure (인프라스트럭처): 도커는 다양한 인프라스트럭처 위에서 동작할 수 있습니다. 이는 클라우드 플랫폼이나 온프레미스 환경 등 다양한 인프라 환경을 지원합니다. 도커는 이러한 인프라 환경에서 동일한 방식으로 컨테이너를 실행하고 관리할 수 있습니다.
  4. App A, App B (애플리케이션 A, 애플리케이션 B): 도커를 사용하여 애플리케이션을 컨테이너화하고 실행합니다. 각 애플리케이션은 독립적인 컨테이너로 실행되며, 필요한 모든 라이브러리, 의존성 및 설정을 포함합니다. 이러한 애플리케이션은 도커 이미지로 패키징되어 생성되고 실행됩니다.

이 구조에서 도커는 호스트 운영 체제 위에서 동작하며, 도커 엔진을 사용하여 다양한 애플리케이션을 컨테이너화하여 실행하는 방식으로 동작합니다. 이를 통해 애플리케이션 간에 격리된 환경을 유지하면서도 호스트 시스템의 리소스를 효율적으로 활용할 수 있습니다.

 

https://www.docker.com/resources/what-container/

 

VM(가상 머신)은 하나의 서버를 여러 서버로 바꾸는 물리적 하드웨어의 추상화입니다. 하이퍼바이저를 사용하면 단일 시스템에서 여러 VM을 실행할 수 있습니다. 각 VM에는 운영 체제, 애플리케이션, 필수 바이너리 및 라이브러리의 전체 복사본이 포함되어 있으며 수십 GB를 차지합니다. VM의 부팅 속도도 느려질 수 있습니다.

 

Docker Container


도커 컨테이너는 도커 이미지의 인스턴스입니다. 이미지를 실행하여 만들어지며, 애플리케이션을 실행하는 데 필요한 모든 것을 포함합니다. 컨테이너는 격리된 환경에서 실행되며, 호스트 시스템과는 독립적으로 작동합니다. 이는 컨테이너가 동일한 환경에서도 항상 동일하게 작동하도록 보장하고, 이식성을 높여줍니다.

 

컨테이너는 가상화 기술을 사용하여 자원을 격리하고 공유합니다. 각 컨테이너는 독립적인 파일 시스템을 가지며, 필요한 라이브러리 및 종속성을 가지고 있어야 합니다. 또한 컨테이너는 일반적으로 호스트 시스템의 자원(예: CPU, 메모리, 네트워크 등)을 공유하여 실행됩니다.

 

도커는 이러한 이미지와 컨테이너를 사용하여 애플리케이션을 더 쉽게 관리하고 배포할 수 있도록 도와줍니다. 개발 환경과 프로덕션 환경 간의 일관성을 유지하고, 애플리케이션의 빠른 배포와 확장이 가능하도록 합니다.

 

Docker Image


도커 이미지는 애플리케이션을 실행하기 위한 모든 것을 포함하는 템플릿입니다. 이 템플릿은 응용 프로그램을 실행하는 데 필요한 파일 시스템과 소프트웨어 환경, 코드, 라이브러리 및 종속성 등을 포함합니다.

 

이미지는 읽기 전용으로 구성되며, 여러 컨테이너를 생성하는 데 사용됩니다. 이미지는 빌드하고, 저장소에 저장하며, 공유할 수 있습니다.도커 이미지는 여러 레이어로 구성되어 있습니다. 이 레이어는 변경 가능하며, 이미지의 수정 사항은 새 레이어로 추가됩니다. 이는 이미지를 가볍고 재사용 가능하게 만들어줍니다.

 

이미지는 Dockerfile이라는 특별한 파일에 정의될 수 있으며, Dockerfile에는 이미지를 구성하는 데 필요한 모든 단계와 명령이 포함됩니다.