Docker 엔진 구조와 각 구성 요소를 알아보자.
Docker 엔진은 도커 클라이언트, 도커 데몬, 컨테이너 레지스트리로 이루어져 있으며, 이들 간의 상호작용을 통해 컨테이너를 생성, 관리, 실행하는 방식으로 동작한다.
도커 클라이언트 <-> 도커 데몬 <-> 컨테이너 레지스트리
도커 클라이언트의 요청에 따라 도커 데몬은 레지스트리와 통신해 컨테이너 이미지를 내려받고 업로드 한다.
① 도커 클라이언트 (Docker Client)
docker run, docker build, docker pull 등)를 입력하여 컨테이너를 관리합니다.② 도커 데몬 (Docker Daemon)
네트워크
: 컨테이너 간 또는 외부와의 통신을 가능하게 하는 가상 네트워크 환경
볼륨
: 컨테이너 데이터가 사라지지 않고 영구적으로 저장될 수 있도록 호스트와 공유하는 저장 공간
: 컨테이너가 읽고 쓰는 데이터를 지속화하기 위한 방법
③ 컨테이너 레지스트리 (Container Registry)
도커 허브 (Docker Hub)
: 공용 Docker Hub 이미지 저장소
레지스트리 (Registry)
: Docker 이미지 저장소
pull)하거나, 새로운 이미지를 업로드(push)할 수 있습니다.Docker의 RESTful API 통신 구조
: Docker에서 사용되는 API는 RESTful API로, 도커 클라이언트와 도커 데몬 간의 통신은 HTTP 프로토콜을 기반으로 합니다.
: 클라이언트는 이 API를 통해 컨테이너의 생성, 시작, 중지, 삭제 요청을 보내고, 도커 데몬은 요청을 처리하여 결과를 반환합니다.
RESTful API
: URL로 리소스를 식별하고, HTTP 메서드(GET, POST 등)를 사용해 요청과 응답을 처리하는 웹 API로, 주로 JSON 형식의 데이터를 반환하며 상태를 유지하지 않습니다.
HTTP(Hypertext Transfer Protocol)
: 클라이언트와 서버 간의 데이터 통신을 위한 프로토콜로, 웹 페이지와 관련된 데이터를 요청하고 응답하는 데 사용됩니다.
이 구조를 통해 Docker는 애플리케이션의 실행과 배포를 효율적으로 관리할 수 있으며, 쉽게 확장 가능한 컨테이너 환경을 제공합니다.