도커 이미지와 컨테이너가 무엇인지 알았다면, 이제는 “그걸 실제로 누가 실행하느냐”를 볼 차례이다.

역할의 주체는 Docker Engine이다.
Docker Engine의 정의를 살펴보면 다음과 같다.
<aside>
Docker Engine은 Docker daemon(dockerd)을 중심으로, 클라이언트가 보내는 요청을 받아 이미지, 컨테이너, 네트워크, 볼륨 같은 도커 객체를 생성/관리하는 실행 엔진이다.
</aside>
위 개념을 통해서도 알 수 있듯이, 도커는 기본적으로 Client-Server 구조로 동작한다.
우리가 터미널에서 docker run 같은 명령어를 입력하는 부분이 Docker CLI (클라이언트)이다.
CLI가 도커를 직접 실행한다기보다, 요청을 만들어서 아래 계층으로 전달하는 역할으로 보면 된다.
(이때 CLI가 만든 요청은 Docker REST API 형태로 전달)
dockerd(도커 데몬)이 실제 작업을 하는 서버 프로세스이다.
dockerd는 API 요청을 받아서 다음 도커 객체들을 만들고 관리한다.