Docker 엔진 구조와 각 구성 요소를 알아보자.



Docker 엔진 구조

Docker 엔진은 도커 클라이언트, 도커 데몬, 컨테이너 레지스트리로 이루어져 있으며, 이들 간의 상호작용을 통해 컨테이너를 생성, 관리, 실행하는 방식으로 동작한다.


1) Docker 엔진 구조 다이어그램

 도커 클라이언트 <-> 도커 데몬 <-> 컨테이너 레지스트리

도커 클라이언트의 요청에 따라 도커 데몬은 레지스트리와 통신해 컨테이너 이미지를 내려받고 업로드 한다.


2) 각 구성 요소의 역할 및 설명

① 도커 클라이언트 (Docker Client)

  • 도커 클라이언트 = 사용자 인터페이스 = 클라이언트
  • 설명 : Docker와 상호작용하기 위한 사용자 인터페이스입니다.
  • 주요 기능 :
    • CLI(Command Line Interface)를 통해 Docker 명령어(예: docker run, docker build, docker pull 등)를 입력하여 컨테이너를 관리합니다.
    • 입력된 명령어를 도커 데몬에 전달하여 작업을 요청합니다.

② 도커 데몬 (Docker Daemon)

네트워크
: 컨테이너 간 또는 외부와의 통신을 가능하게 하는 가상 네트워크 환경

볼륨
: 컨테이너 데이터가 사라지지 않고 영구적으로 저장될 수 있도록 호스트와 공유하는 저장 공간
: 컨테이너가 읽고 쓰는 데이터를 지속화하기 위한 방법

  • 도커 데몬 = 도커 객체의 관리 = 서버
  • 설명: Docker 엔진의 핵심 서버 역할을 하는 백그라운드 프로세스입니다.
  • 주요 기능:
    • 도커 클라이언트의 요청을 받아 Docker 객체(컨테이너, 이미지, 네트워크, 볼륨 등)를 생성, 삭제, 관리하는 역할을 합니다.
    • 필요한 경우 컨테이너 이미지를 다운로드하기 위해 컨테이너 레지스트리와 통신합니다.
    • 컨테이너의 생성과 실행을 담당하며, 클라이언트가 명령을 통해 요청한 작업을 처리합니다.

③ 컨테이너 레지스트리 (Container Registry)

도커 허브 (Docker Hub)
: 공용 Docker Hub 이미지 저장소

레지스트리 (Registry)
: Docker 이미지 저장소

  • 컨테이너 레지스트리 = 컨테이너 이미지의 관리
  • 설명: 컨테이너 이미지를 저장하고 관리하는 중앙 저장소입니다.
  • 주요 기능:
    • Docker Hub와 같은 공용 레지스트리와 사설 레지스트리가 존재하며, Docker 이미지를 저장하고 관리합니다.
    • 도커 데몬이 특정 이미지가 필요할 때 이를 다운로드(pull)하거나, 새로운 이미지를 업로드(push)할 수 있습니다.
    • 이미지를 중앙에서 관리함으로써 여러 환경에서 일관된 컨테이너 실행 환경을 제공합니다.

3) 요약: Docker 엔진 구조 및 작동 방식

Docker의 RESTful API 통신 구조
: Docker에서 사용되는 API는 RESTful API로, 도커 클라이언트와 도커 데몬 간의 통신은 HTTP 프로토콜을 기반으로 합니다.
: 클라이언트는 이 API를 통해 컨테이너의 생성, 시작, 중지, 삭제 요청을 보내고, 도커 데몬은 요청을 처리하여 결과를 반환합니다.

RESTful API
: URL로 리소스를 식별하고, HTTP 메서드(GET, POST 등)를 사용해 요청과 응답을 처리하는 웹 API로, 주로 JSON 형식의 데이터를 반환하며 상태를 유지하지 않습니다.

HTTP(Hypertext Transfer Protocol)
: 클라이언트와 서버 간의 데이터 통신을 위한 프로토콜로, 웹 페이지와 관련된 데이터를 요청하고 응답하는 데 사용됩니다.

  • 사용자는 도커 클라이언트에서 명령을 입력하여 도커 데몬에 API 요청을 보냅니다.
  • 도커 데몬은 이 요청을 처리하고, 필요한 경우 컨테이너 레지스트리에서 이미지를 API를 통해 가져와 컨테이너를 생성하고 관리합니다.
  • 컨테이너 레지스트리는 이미지 저장소 역할을 하며, 도커 데몬이 언제든지 API 요청을 통해 이미지를 가져와 컨테이너 실행에 사용할 수 있도록 합니다.

이 구조를 통해 Docker는 애플리케이션의 실행과 배포를 효율적으로 관리할 수 있으며, 쉽게 확장 가능한 컨테이너 환경을 제공합니다.



참고

https://velog.io/@jungmyeong96/Docker-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%85%98

0개의 댓글