Docker가 컨테이너를 실행하는 원리
도커의 워크 플로우
"빌드" -> " 공유" -> "실행"
도커 엔진(Docker Engine)
- 도커의 관리 기능을 맡는 컴포넌트다. 로컬 이미지 캐시를 담당 하므로 새로운 이미지가 필요하면 이미지를 내려받으며,
기존 이미지가 있으면 전에 내려받은 이미지를 사용한다.
- 호스트 운영체제와 함께 컨테이너와 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다.
- 도커 엔진은 항시 동작하는 백그라운드 프로세스다.
- 도커 API는 표준 HTTP기반 REST API다.
- 도커 엔진의 설정을 수정하면 이 API를 네트워크를 경유해 외부 컴퓨터로 부터 호출 할 수 없도록 차단하거나 허용할 수 있다.
도커 명령행 인터페이스(Docker command-line interface)
- 도커 CLI는 도커 API의 클라이너트다.
- 우리가 docker 명령을 사용할 때 실제로 도커 API를 호출하는 것이 바로 도커 CLI다.
도커 설계의 이해
- 도커 엔진과 상호 작용 할 수 있는 유일한 방법은 API를 통하는 방법뿐이다.
- CLI는 API에 요청을 전달하는 역할을 한다.
- 도커 엔진은 containerd라는 컴포넌트를 통해 컨테이너를 실제로 관리한다.
- containerd는 호스트 운영체제가 제공하는 기능을 통해 컨테이너, 즉 가상환경을 만든다.
- containerd는 CNCF에서 관리하는 오픈 소스 프로젝트 이다.
- 컨테이너는 개방형 컨테이너 이니셔티브라는 공개된 개방형 표준이다.