[Docker] 도커의 동작 방식
도커(Docker)는 애플리케이션을 컨테이너로 패키징하고 배포하는 데 사용되는 도구입니다. 도커는 CLI, 도커 클라이언트, 도커 서버(데몬), 컨테이너드(containerd), 그리고 runC로 구성된 계층 구조를 통해 동작합니다. 이 구조를 통해 사용자 명령이 어떻게 처리되고 컨테이너가 실행되는지 살펴보겠습니다.
- CLI (Command Line Interface)
- 사용자는 터미널 또는 명령 프롬프트를 통해 도커 CLI를 사용하여 명령을 입력합니다.
- 예를 들어, docker pull 명령은 도커 이미지를 도커 허브에서 가져오는 명령입니다.
- Docker API
- 사용자가 입력한 명령은 도커 CLI를 통해 도커 API로 전달됩니다. 도커 API는 클라이언트와 서버 간의 통신을 담당합니다.
- 도커 API는 도커 클라이언트와 도커 데몬 간의 인터페이스 역할을 합니다.
- Docker Client
- 도커 클라이언트는 사용자가 입력한 명령을 도커 데몬에 전달하는 역할을 합니다.
- 도커 클라이언트는 도커 API를 호출하여 명령을 도커 데몬에 전달합니다.
- Docker Server (Daemon)
- 도커 데몬은 도커의 핵심 컴포넌트로, 도커 클라이언트로부터 명령을 받아 컨테이너의 생성, 실행, 관리 등을 수행합니다.
- 예를 들어, docker run 명령을 받으면, 도커 데몬은 해당 명령을 처리하여 컨테이너를 실행합니다.
- containerd
- containerd는 도커의 고수준 런타임으로, 컨테이너의 생성, 관리, 네트워크 설정, 스토리지 조작 등을 담당합니다.
- 도커 데몬은 containerd를 통해 컨테이너를 관리합니다.
- runC
- runC는 도커의 저수준 런타임으로, 실제로 컨테이너를 실행하는 역할을 합니다.
- containerd는 runC를 호출하여 컨테이너를 실행합니다.
- runC는 cgroups, 네트워크 네임스페이스, 파일 시스템 등 다양한 리눅스 커널 기능을 사용하여 컨테이너를 격리하고 실행합니다.
도커 명령 처리 예시
아래는 docker run 명령이 처리되는 과정을 예시로 설명합니다:
- 사용자가 CLI에서 docker run hello-world 명령을 입력합니다.
- 도커 클라이언트는 이 명령을 도커 API를 통해 도커 데몬에 전달합니다.
- 도커 데몬은 명령을 받아 containerd에 전달하고, containerd는 runC를 호출하여 컨테이너를 실행합니다.
- runC는 실제로 컨테이너를 생성하고, 격리된 환경에서 hello-world 이미지를 실행합니다.
- 컨테이너가 실행되면서 출력 결과를 사용자에게 전달합니다.
이와 같은 과정에서 도커는 컨테이너의 생성, 실행, 관리 등을 효율적으로 처리하며, 개발자가 애플리케이션을 쉽게 배포하고 관리할 수 있도록 돕습니다.
'낙서장[1] > 4. Docker' 카테고리의 다른 글
[Docker] 도커 명령어 모음 (0) | 2025.02.17 |
---|---|
[Docker] docker search 특정 형식으로 출력하기 (0) | 2025.02.17 |
[Docker] 도커의 저수준 런타임과 고수준 런타임 (0) | 2025.02.17 |
[Docker] 도커의 주요 구성 요소 (0) | 2025.02.17 |
[Docker] 운영체제(OS), 애플리케이션, 컨테이너의 상호작용/장점 (0) | 2025.02.17 |