Containerization/Docker

# [Docker] Docker Engine

leehi0110 2024. 9. 29. 09:00
반응형

0. 이해를 위한 사전 지식

 

# [Docker] 도커란 무엇인가?

1. 도커(Docker)란 무엇인가?도커(Docker)는 소프트웨어 기술을 활용하여 애플리케이션을 더 쉽게 개발, 배포 및 실행할 수 있도록 도와주는 오픈 소스 플랫폼이다.애플리케이션은 격리된 환경에서

leehi0110.tistory.com

1. Docker Engine 이란?

  • Docker Engine은 클라이언트-서버 아키텍쳐를 기반으로 하는 Docker의 핵심 컴포넌트로 컨테이너 생성, 시작, 중지, 삭제와 같은 역할을 한다.
  • Docker Engine은 세가지 주요 구성 요소인 Docker Daemon, Docker CLI, Docker  REST API로 이루어져 있다.

2. Docker Engine의 구성 요소

  • Docker Daemon (dockerd)
    • Docker Daemon은 Docker Engine의 백그라운드 프로세스로, 컨테이너 생성, 실행, 중지, 삭제와 같은 역할을 수행한다.
    • Docker Daemon은 클라이언트의 요청을 처리하고, 이미지 빌드, 네트워킹 설정, 불륨 관리 등도 수행한다.
  • Docker CLI
    • Docker CLI는 사용자가 Docker Daemon과 소통할 수 있도록 명령어를 제공하는 도구이다.
    • 쉽게 말해 Docker CLI에서 제공하는 Command를 통해 컨테이너를 생성, 시작, 중지, 삭제할 수 있을 뿐 아니라 이미지를 빌드하는 것과 같은 행위를 할 수있다.
  • Docker REST API
    • Docker REST API는 Docker Damon과 상호작용 할 수 있는 프로그래밍 인터페이스를 제공한다.
    • 이를 통해 개발자는 애플리케이션에서 Docker 기능을 자동화하고 통합 할 수 있다.

3. Docker Engine 동작 원리

  • 명령어 입력
    • 사용자가 Docker CLI를 통해 명령어를 입력
    • 예를 들어 새로운 컨테이너를 생성하기 위해 아래와 같은 명령어를 실행할 수 있다.
docker run -d --name <Container Name> <Docker Image>

  • 요청 전송
    • Docker CLI는 사용자가 입력한 명령어를 해석하고 이를 HTTP 요청으로 반환하여 Docker Daemon에 전송
    • 해당 요청은 로컬 호스트의 유닉스 소켓을 통해 전송 되거나, 원격 호스트의 TCP/IP를 통해 전송된다.

  • 요청 처리
    • Docker Daemon은 수신한 요청을 처리하기 위해 'containerd'를 호출한다.
    • 'containerd'는 Docker Daemon의 하위 계층에서 동작하는 고성능 컨테이너 런타임 도구로, 컨테이너 생명 주기 관리, 이미지 관리, 네트워킹 설정, 스토리지 관리 등의 작업을 수행한다.

  • 컨테이너 생성
    • 'containerd'는 'runc'를 호출하여 실제로 컨테이너를 생성하고 실행한다.
    • 'runc'는 저수준의 컨테이 런타임 도구로, 컨테이너를 실행하는 역할을 하며, 이후에는 'shim' 프로세스를 생성하여 컨테이너의 생명 주기를 관리한다.
    • 따라서, 'runc'가 컨테이너를 생성 후 종료되면, 'shim' 프로세스가 컨테이너를 관리하게 된다

  • 컨테이너 실행
    • 'containerd'는 생성된 컨테이너를 실행하고, 실행 상태를 모니터링 한다.
    • Docker Daemon은 'containerd'로 부터 실행 상태를 받은 뒤, HTTP 응답을 Docker CLI에 전송한다.

 

 

🙋‍♂️ 궁금한 점이나 잘못된 내용을 댓글로 적어주시면 감사하겠습니다 !!

반응형

'Containerization > Docker' 카테고리의 다른 글

# [Docker] 도커란 무엇인가?  (2) 2024.09.28