• 도커 엔진(Docker Engine)은 도커의 관리 기능을 맡는 컴포넌트다. 로컬 이미지 캐시를 담당하므로 새로운 이미지가 필요하면 이미지를 내려받으며, 기존 이미지가 있다면 전에 내려받은 이미지를 사용한다. 호스트 운영체제와 함께 컨테이너와 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다. 도커 엔진은 항시 동작하는 백그라운드 프로세스다(리눅스 데몬 또는 윈도 서비스와 같다).
• 도커 엔진은 도커 API를 통해 맡은 기능을 수행한다. 도커 API(Docker API)는 표준 HTTP 기반 REST API다. 도커 엔진의 설정을 수정하면 이 API를 네트워크를 경유해 외부 컴퓨터로부터 호출할 수 없도록 차단(기본 설정)하거나 허용할 수 있다.
• 도커 명령행 인터페이스(Docker command-line interface)(도커 CLI)는 도커 API의 클라이언트다. 우리가 docker 명령을 사용할 때 실제로 도커 API를 호출하는 것이 바로 도커 CLI다.
도커의 설계를 이해하면 도커를 더욱 잘 활용할 수 있다. 도커 엔진과 상호 작용할 수 있는 유일한 방법은 API를 통하는 방법뿐이다. 그리고 API의 접근 허용 범위를 몇 가지로 선택할 수 있다. CLI는 API에 요청을 전달하는 역할을 한다.
지금까지는 한 대의 물리 머신에서 컨테이너를 실행하고 관리하기 위한 목적으로 CLI를 사용했는데, 원격 컴퓨터에서 실행 중인 도커를 조작할 수 있도록 CLI가 요청을 전달하는 곳을 변경할 수 있다. 빌드 환경, 운영 환경, 테스트 환경 등 서로 다른 환경에서 동작하는 컨테이너를 관리하려면 이런 방법을 사용해야 한다. 도커 API는 운영체제와 상관없이 동일하므로 라즈베리 파이나 클라우드 환경, 리눅스 서버 등 어느 곳에 위치한 도커 엔진이라도 윈도가 설치된 노트북에서 이들을 제어할 수 있다.