임베디드 관련 카테고리/Docker

Docker Engine, Docker Client, Docker Daemon 이해하기

CBJH 2024. 12. 11. 16:20
728x90
반응형

도커는 컨테이너 기반 가상화 기술로, 애플리케이션의 배포 및 실행 환경을 간소화하는 데 널리 사용됩니다.
도커의 핵심은 Docker Engine이며, 이를 구성하는 주요 요소로 Docker Client, Docker Daemon이 있습니다.
이 글에서는 도커 엔진과 관련된 개념들을 쉽게 이해할 수 있도록 설명합니다.


Docker Engine이란?

Docker Engine은 도커의 핵심 소프트웨어로, 컨테이너를 빌드하고 실행하며 배포하는 기능을 제공합니다.
마치 자동차의 엔진처럼 도커 엔진은 여러 구성 요소로 이루어진 모듈식 시스템입니다.
Docker Engine은 다음과 같은 세 가지 주요 구성 요소로 나뉩니다:

  1. Docker Daemon
    • 도커의 백그라운드 작업자입니다.
    • 컨테이너를 빌드하고, 실행하며, 관리하는 핵심 프로세스 역할을 합니다.
    • 데몬은 항상 실행 중이며, 요청이 들어오면 이를 처리합니다.
    • 도커 데몬은 보통 dockerd라는 이름으로 실행됩니다.
  2. REST API
    • Docker Engine과 통신하기 위한 인터페이스입니다.
    • 사용자가 CLI를 통해 입력한 명령어는 REST API를 통해 도커 데몬에 전달됩니다.
  3. Docker CLI
    • 사용자가 명령어를 입력해 도커를 제어할 수 있는 명령줄 도구입니다.
    • 예를 들어, docker run 명령어를 입력하면 CLI가 REST API를 통해 데몬에 컨테이너 실행 요청을 보냅니다.

Docker Client란?

Docker Client는 사용자가 도커와 상호작용하는 인터페이스입니다.
도커 클라이언트를 통해 입력된 명령어는 REST API를 사용해 Docker Daemon과 통신하며, 컨테이너와 이미지를 제어합니다.

주요 역할:

  • 사용자가 입력한 명령어를 도커 데몬에 전달.
  • 명령 결과를 사용자에게 표시.

예시 명령어:

  • docker run: 컨테이너 실행
  • docker build: 이미지 빌드
  • docker ps: 실행 중인 컨테이너 목록 확인

Docker Daemon이란?

Docker Daemon은 도커 엔진의 핵심 프로세스로, 실제로 컨테이너와 이미지를 생성하고 관리하는 작업을 수행합니다.
데몬은 백그라운드에서 실행되며, 사용자의 요청을 처리합니다.

데몬(Daemon)이란?

  • "항상 실행 중인 백그라운드 프로세스"를 의미합니다.
  • 사용자가 직접 접근하지 않아도 요청을 받아 작업을 수행합니다.
  • 보통 이름 끝에 **d**가 붙습니다. (예: dockerd, httpd)

Docker Daemon의 역할:

  1. 컨테이너 관리: 컨테이너 생성, 실행, 중지, 삭제.
  2. 이미지 관리: 도커 이미지를 빌드하고 저장하거나 레지스트리에 업로드.
  3. 리소스 관리: CPU, 메모리, 네트워크 등 컨테이너가 사용하는 자원을 관리.

Docker Engine, Client, Daemon의 관계

도커는 클라이언트-서버(Client-Server) 모델로 작동합니다.
사용자는 Docker Client를 통해 명령을 입력하고, 이 명령은 REST API를 통해 Docker Daemon으로 전달됩니다.
데몬은 요청받은 작업(예: 컨테이너 실행)을 수행한 뒤 결과를 클라이언트에 반환합니다.


자동차와의 비유로 이해하기

Docker Engine은 자동차의 엔진과 비슷합니다:

  • Docker Engine: 자동차 엔진 전체 시스템 → 도커를 움직이는 핵심.
  • Docker Daemon: 엔진의 각 부품(실린더, 점화 플러그 등)이 실제로 작동하는 부분.
  • Docker Client: 운전자 → 운전자가 페달과 핸들을 조작해 자동차를 움직임.

요약

  1. Docker Engine: 도커의 핵심 소프트웨어로, 컨테이너를 빌드, 실행, 배포.
  2. Docker Client: 사용자가 명령을 입력하는 인터페이스.
  3. Docker Daemon: 실제로 작업을 수행하는 백그라운드 프로세스.

도커는 쉽고 효율적이며 일관성 있는 환경을 제공하기 위해 이 세 가지 구성 요소가 유기적으로 작동합니다.
이해를 돕기 위해 자동차 엔진과 비교해 보면, 각 요소의 역할이 더욱 명확하게 느껴질 것입니다.


출처: ENFJ.dev