도커(Docker)는 컨테이너 기반의 가상화 플랫폼입니다. 도커는 다음과 같은 구성 요소로 이루어져 있습니다.
-
도커 엔진(Docker Engine)
도커의 핵심 역할을 수행하는 구성 요소로서, 컨테이너 생성, 실행, 관리 등의 작업을 수행합니다. 도커 엔진은 CLI(Command Line Interface)와 API(Application Programming Interface)를 통해 도커를 제어할 수 있습니다.
-
도커 데몬(Docker Daemon)
- 도커 API 서버
도커 데몬은 도커 API 서버를 제공합니다. 도커 API는 HTTP RESTful API로 제공되며, 클라이언트는 도커 API를 통해 도커 데몬과 통신합니다.
- 이미지 관리
도커 데몬은 도커 이미지를 관리합니다. 도커 이미지는 Dockerfile을 통해 빌드되며, 도커 데몬은 이미지를 다운로드하고 저장합니다.
- 컨테이너 관리
도커 데몬은 도커 컨테이너를 생성, 실행, 중지, 삭제하는 등의 작업을 수행합니다. 또한, 도커 데몬은 컨테이너 간의 네트워크 연결을 관리하며, 컨테이너의 로그를 수집하고 관리합니다.
- 저장소 관리
도커 데몬은 도커 이미지와 컨테이너의 파일 시스템을 저장하고 관리합니다. 도커 데몬은 호스트 OS의 파일 시스템과 별개로 독립적인 파일 시스템을 제공하며, 컨테이너 간에 파일 시스템을 공유할 수 있습니다.
- 보안 관리
도커 데몬은 컨테이너 간의 격리를 제공하며, 호스트 OS와의 격리도 제공합니다. 또한, 도커 데몬은 보안 기능을 제공하여 컨테이너의 안전성을 보장합니다.
- 네트워크 관리
도커 데몬은 컨테이너 간의 네트워크 연결을 관리합니다. 도커 데몬은 컨테이너 간에 가상 네트워크를 생성하여 컨테이너 간의 통신을 가능하게 합니다. 또한, 호스트 OS와 컨테이너 간의 네트워크 연결도 가능합니다.
-
도커 클라이언트(Docker Client)
- 도커 커맨드 라인 인터페이스(CLI)
도커 클라이언트는 커맨드 라인 인터페이스(CLI)를 제공합니다. 사용자는 CLI를 사용하여 도커 데몬과 상호작용할 수 있습니다. CLI를 사용하여 도커 이미지를 다운로드하고, 컨테이너를 생성하고 실행하며, 도커 데몬과 통신할 수 있습니다.
- 도커 호스트 연결
도커 클라이언트는 도커 데몬과 연결합니다. 사용자는 클라이언트를 사용하여 로컬 또는 원격 도커 데몬에 연결할 수 있습니다.
- 이미지 관리
도커 클라이언트는 도커 이미지를 관리합니다. 사용자는 CLI를 사용하여 이미지를 다운로드하고, 업로드하고, 빌드할 수 있습니다.
- 컨테이너 관리
도커 클라이언트는 도커 컨테이너를 생성, 실행, 중지, 삭제하는 등의 작업을 수행합니다. 사용자는 CLI를 사용하여 컨테이너를 관리할 수 있습니다.
- 네트워크 관리
도커 클라이언트는 도커 네트워크를 관리합니다. 사용자는 CLI를 사용하여 가상 네트워크를 생성하고, 컨테이너를 네트워크에 연결하고, 네트워크를 삭제할 수 있습니다.
- 데이터 볼륨 관리
도커 클라이언트는 도커 데이터 볼륨을 관리합니다. 사용자는 CLI를 사용하여 데이터 볼륨을 생성하고, 삭제하고, 볼륨을 컨테이너에 연결할 수 있습니다.
-
도커 이미지(Docker Image)
컨테이너를 생성하기 위한 뼈대입니다. 컨테이너를 생성하는데 필요한 파일 시스템과 실행할 명령어 등을 포함하고 있습니다. 도커 이미지는 불변성을 가지며, 이미지를 수정하면 새로운 버전의 이미지가 생성됩니다.
-
도커 컨테이너(Docker Container)
도커 이미지를 기반으로 생성되는 실행 중인 인스턴스입니다. 컨테이너는 격리된 환경에서 실행되며, 컨테이너 간의 상호작용이나 호스트와의 상호작용을 위한 네트워크 및 저장소를 가질 수 있습니다.
-
도커 레지스트리(Docker Registry)
도커 이미지를 저장하고 공유하기 위한 저장소입니다. 도커 허브(Docker Hub)와 같은 공개적인 레지스트리뿐만 아니라, 개인적인 레지스트리를 운영할 수도 있습니다.
-
도커 컴포즈(Docker Compose)
다중 컨테이너 애플리케이션을 정의하고 실행하기 위한 도구입니다. YAML 파일로 정의되며, 여러 개의 도커 컨테이너를 하나의 애플리케이션으로 구성할 수 있습니다.
-
도커 스웜(Docker Swarm)
도커 컨테이너를 클러스터로 구성하여 다중 호스트에서 컨테이너를 관리할 수 있는 도구입니다. 도커 스웜은 여러 개의 도커 호스트를 하나의 가상 호스트로 묶어서 애플리케이션을 관리할 수 있습니다.