도커는 클라이언트-서버 아키텍처를 사용합니다. 도커 클라이언트는 컨테이너를 빌드, 실행, 배포하는 작업을 수행하는 도커 데몬과 통신을 합니다. 도커 클라이언트와 데몬은 동일한 시스템에서 실행되거나 도커 클라이언트를 원격 도커 데몬에 연결할 수 있습니다. 도커 클라이언트와 데몬은 UNIX Socker 또는 REST API를 사용하여 통신합니다. 또 다른 도커 클라이언트는 다중 컨테이너 애플리케이션을 정의하고 작업할 수 있는 도커 컴포즈(Docker Compose) 입니다.

 

Docker Architecture Diagram 1

 

도커 이미지 (Docker Image)

도커 이미지는 컨테이너를 생성할 때 필요하며, 가상 머신을 생성할 때 사용하는 ISO 파일과 비슷한 개념입니다. 이미지는 여러개의 레이어로 된 바이너리 파일이 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다. 이미지는 도커 명령어로 내려받을 수 있고 별도로 설치할 필요는 없습니다.

 

자신만의 이미지를 만들거나 다른 사람이 만들고 레지스트리에 게시한 이미지를 사용할 수 있습니다. 고유한 이미지를 빌드하려면 이미지를 만들고 실행하기 위한 구문으로 구성된 도커파일(Dockerfile)을 만듭니다. 도커파일의 각 명령은 이미지에 레이어를 생성합니다. 도커파일을 변경하고 이미지를 다시 빌드하면 변경된 레이어만 다시 빌드됩니다. 이것은 다른 가상화 기술과 비교할 때 이미지를 매우 작고 가볍고 빠르게 만드는 부분입니다.

 

도커에서 사용하는 이미지의 이름은 [저장소명]/[이미지명]:[태그] 형식으로 구성됩니다.

  • 저장소명 : 이미지가 저장된 장소를 의미하며 도커 허브(Docker Hub)에서 저장소명이 없는 이미지는 공식 이미지(Official Image)를 뜻합니다.
  • 이미지명 : 이미지 이름으로 생략될 수 없으며 반드시 설정해야 합니다.
  • 태그 : 이미지의 버전입니다. 버전을 명시할 수 있지만 생략할 경우 기본적으로 latest로 인식합니다.

 

도커 컨테이너 (Docker Container)

컨테이너는 이미지를 실행하기 위한 인스턴스입니다. 도커 API, CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동, 삭제할 수 있습니다. 컨테이너는 이미지를 읽기 전용으로 사용하며 이미지에서 변경된 내용만 컨테이너 레이어에 저장되기 때문에 원래 이미지는 영향을 받지 않습니다. 또한 생성된 각 컨테이너는 각기 독립된 파일시스템을 제공받으며 호스트와 분리되어 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해도 다른 컨테이너와 호스트에는 변화가 없습니다.

 

도커 파일 (Dockerfile)

도커 이미지를 빌드하기 위한 지침을 포함하는 텍스트 파일입니다. 배치 스크립트처럼 첫 번째 줄에 지정된 기본 이미지에서 시작한 다음, 필요한 작업 환경이 완성될 때까지 지침에 따라 필요한 프로그램을 설치하고 파일을 복사하는 등의 작업을 수행합니다.

 

도커 레지스트리 (Docker registries)

도커 레지스트리는 도커 이미지를 저장합니다. 도커 허브(Docker Hub)는 누구나 사용할 수 있는 공용 레지스트리이며 도커는 기본적으로 도커 허브에서 이미지를 찾도록 구성되어 있습니다. 물론 자신의 개인 레지스트리를 구성하는 것도 가능합니다.

 


1 이미지출처 : https://docs.docker.com/get-started/overview/

'Dev Story > cloud' 카테고리의 다른 글

[Docker] 가상화 머신과 도커 컨테이너  (0) 2022.02.13


AND