반응형
0. 이해를 위한 사전 지식
- 도커(Docker)란 무엇인가? 2024.09.28 - [Containerization/Docker] - # [Docker] 도커란 무엇인가?
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 |
---|