도커 아키텍처 (Docker Architecture)
docker 명령을 치면 그 프로그램이 컨테이너를 만드는 게 아닙니다. 도커는 명령을 보내는 Client, 실제로 이미지와 컨테이너를 다루는 Docker Host 의 데몬(dockerd), 이미지를 보관하는 Registry 로 나뉘고, 셋은 REST API 로 대화합니다. pull 은 데몬이 레지스트리에서 이미지를 받아 호스트에 저장하는 일이고, run 은 그 이미지를 복사해 실행 인스턴스를 만드는 일입니다.
01도커 아키텍처 (Docker Architecture)
개념 한눈에 보기도커는 하나의 프로그램이 아닙니다. 명령을 치는 Client, 실제로 일하는 Docker Host, 이미지를 보관하는 Registry 세 부분으로 나뉩니다. Registry 는 대개 네트워크 건너편에 있습니다.
터미널에 치는 docker 명령은 전부 Client 입니다. 직접 컨테이너를 만들지 않고 데몬(dockerd)에 REST API 로 요청을 보낼 뿐입니다. 이미지·컨테이너를 실제로 만드는 것은 전부 데몬 쪽입니다.
docker pull 을 치면 데몬이 Registry 에 이미지를 요청합니다. Client 는 레지스트리와 직접 대화하지 않습니다 — 네트워크를 건너는 것은 데몬입니다.
받아온 이미지는 Docker Host 에 저장됩니다. 이제 인터넷 없이도 이 이미지로 컨테이너를 띄울 수 있습니다.
docker run 은 이미지를 복사해 실행 인스턴스로 만듭니다. 이미지는 읽기 전용 원본이고 컨테이너는 그것을 실행한 결과라, 같은 이미지로 컨테이너를 여러 개 띄울 수 있습니다.
docker build 는 반대 방향입니다. Dockerfile 을 데몬에 보내면 데몬이 이미지를 만들어 Docker Host 에 넣습니다.
02 쉽게 이해하기
For Everyone도커는 명령을 보내는 Client, 이미지를 만들고 컨테이너를 띄우는 데몬, 이미지를 보관하는 Registry 셋으로 나뉩니다. Client 는 레지스트리와 직접 통신하지 않고 데몬에게만 요청합니다.
터미널의 docker 는 요청을 만들어 데몬에 보내는 클라이언트입니다.
데몬이 이미지·컨테이너·네트워크·볼륨을 실제로 관리하므로, 데몬이 떠 있지 않으면 어떤 명령도 동작하지 않습니다.
이미지는 읽기 전용 원본이고 컨테이너는 그것을 실행한 인스턴스라, 같은 이미지 하나로 컨테이너를 여러 개 띄울 수 있습니다.
클라이언트와 데몬은 같은 기계에 있을 수도, 원격으로 떨어져 있을 수도 있습니다.
- –docker 명령이 안 될 때 데몬 상태부터 확인하기
- –원격 호스트에 붙여 쓰기
- –이미지와 컨테이너의 차이 구분하기
- –사설 레지스트리 도입 판단
03 자주 묻는 질문
FAQ도커 아키텍처 (Docker Architecture)란 무엇인가요?+
docker 명령을 치면 그 프로그램이 컨테이너를 만드는 게 아닙니다. 도커는 명령을 보내는 Client, 실제로 이미지와 컨테이너를 다루는 Docker Host 의 데몬(dockerd), 이미지를 보관하는 Registry 로 나뉘고, 셋은 REST API 로 대화합니다. pull 은 데몬이 레지스트리에서 이미지를 받아 호스트에 저장하는 일이고, run 은 그 이미지를 복사해 실행 인스턴스를 만드는 일입니다.
도커 아키텍처 (Docker Architecture)은(는) 어디에 사용하나요?+
docker 명령이 안 될 때 데몬 상태부터 확인하기, 원격 호스트에 붙여 쓰기, 이미지와 컨테이너의 차이 구분하기, 사설 레지스트리 도입 판단
도커 아키텍처 (Docker Architecture)를 쉽게 비유하면?+
도커는 명령을 보내는 Client, 이미지를 만들고 컨테이너를 띄우는 데몬, 이미지를 보관하는 Registry 셋으로 나뉩니다. Client 는 레지스트리와 직접 통신하지 않고 데몬에게만 요청합니다.
