[Docker] 도커 아키텍처(Docker Architecture)

Sungwoo·2025년 1월 22일

Docker

목록 보기
2/4
post-thumbnail

도커 아키텍처(Docker Architecture)

위 아키텍처는 Docker를 이용하여 클라이언트-서버를 구성한 아키텍처다.

각 아키텍처 요소들의 역할은 다음과 같다.

Client

Docker 명령어를 사용하여 컨테이너를 실행, 관리, 모니터링하고, 이미지를 빌드하거나 다운로드할 수 있다.
또한 Docker 명령어를 통해 Docker Host와 상호작용한다.

Docker Host

Docker Host는 Docker 컨테이너를 실행하는데 새용되는 가상머신이다.
Docker 데몬을 실행하여 컨테이너를 생성, 시작, 중지, 관리를 한다.
Client의 요청을 받아들이고 컨테이너를 생성, 시작, 중지, 제거한다.
또한 호스트 운영체제의 리소스를 사용하여 컨테이너를 실행하고 관리한다.

Registry

Registry는 Docker 이미지를 저장하고 관리하는 중앙 집중식 저장소다.
public한 도커 레지스트리로 Docker 이미지를 공유하고 검색할 수도 있고,
private한 도커 레지스트리를 구축해 이미지를 안전하게 저장하고 관리할 수도 있다.

각 아키텍처 요소 간 흐름

  1. Client -> Docker Host
    클라이언트는 도커 명령어(docker run, build, pull, ...)를 사용하여 도커 호스트에 요청을 보낸다.
명령어동작
docker runDocker 컨테이너를 생성
docker buildDocker 이미지를 빌드
docker pullDocker 이미지를 다운로드하여 로컬 Docker 환경에 저장
  1. Docker Host
    도커 호스트는 클라이언트의 요청을 받아들이고 해당 요청에 따라 컨테이너를 생성, 중지, 제거하거나 이미지를 관리한다.

  2. Docker Host -> Registry
    클라이언트가 이미지를 생성하고 업로드하려면, 도커 호스트는 해당 이미지를 도커 레지스트리에 업로드한다.

  3. Registry
    도커 호스트에서는 레지스트리에 이미지를 업로드하거나 다운로드할 수 있다.

  4. Docker Host -> Client
    컨테이너가 종료되면, 도커 호스트는 해당 컨테이너의 상태와 결과를 클라이언트에게 반환한다.
    이러한 과정들을 통해 클라이언트, 도커 호스트, 레지스트리는 도커 환경에서 상호작용하며 이미지 업로드와 다운로드, 컨테이너의 생성과 관리 등의 작업을 수행한다.

Docker 주요 용어

위 아키텍처에서 등장한 요소들과 그 외 주요 용어들에 대해 알아보자.

도커 클라이언트(Docker Client)

도커 컨테이너와 상호작용을 하기 위한 커멘드 라인 도구다.

도커 클라이언트를 사용하면 도커 호스트와 통신하여 도커 컨테이너의 생성, 실행, 관리 등을 할 수 있다.

다양한 명령어와 옵션을 제공하여 도커 환경을 효율적으로 관리할 수 있도록 도와준다.

도커 호스트(Docker Host) = 도커 서버(Docker Server)

도커 컨테이너를 실행하는 데 사용되는 시스템이다.

클라이언트(Client)로부터 명령어를 전달받아 컨테이너의 생성, 실행, 관리를 담당하며, 도커 이미지를 저장하고 컨테이너 간 통신을 관리한다.

도커 호스트는 호스트 운영체제, 네트워크와 상호작용하며 컨테이너가 실행되는 환경을 제공한다.

도커 레지스트리(Docker Registry)

도커 이미지를 저장하고 관리하기 위한 중앙 저장소다.
이때 도커 이미지는 컨테이너화된 애플리케이션을 실행하기 위한 파일 시스템과 실행 환경을 포함한다.

도커 레지스트리는 이러한 이미지를 중앙에서 관리하고 공유할 수 있는 플랫폼이다.

도커 레지스트리를 사용하면 이미지를 쉽게 관리하고 배포할 수 있으며 여러 사용자와 협업하여 이미지를 공유할 수 있다.

도커 데몬(Docker Deamon)

클라이언트에서 요청한 도커 명령어를 처리하고 도커 컨테이너를 관리하는 백그라운드 프로세스다.

도커 엔진과 상호 작용하여 컨테이너의 생성, 실행, 중단, 삭제 등을 처리한다.

주로 서버에서 실행되며, 도커 API 요청을 받아들이고 이미지, 컨테이너, 네트워크 등의 관리를 담당한다.
또한 컨테이너 생명주기를 관리하고 리소스 할당, 네트워크 연결 등의 작업을 처리한다.


Docker desktop에서 Engine running 부분을 통해 현재 Docker Engine이 실행중이고, 백그라운드 프로세스로 Docker Deamon이 수행됨을 알 수 있다.

도커 이미지(Docker Image)

도커 컨테이너를 실행하기 위한 파일과 설정 정보를 포함하는 컨테이너의 템플릿을 의미한다.

자신만의 이미지를 가질 수 있고 레지스토리에서 다른 사람이 만든 이미지를 가져와 사용할 수도 있다.

도커 허브와 같은 공개적인 레지스트리나 도커 엔터프라이즈 에디션을 사용한 개인적인 레지스트리에서 관리되고 저장된다.

도커 이미지는 컨테이너를 생성하고 실행하기 위해 사용된다.
도커 클라이언트를 사용하여 이미지를 다운로드하고 컨테이너를 생성할 수 있다.
이미지는 컨테이너의 기반이 되며, 여러 개의 컨테이너를 동시에 실행하거나 스케일링할 수 있다.

이미지를 빠르게 구축하고 공유함으로써 개발과 운영의 효율성을 높일 수 있다.

fun-docker라는 이미지를 생성할 수도 있고,
friendca라는 레지스트리에서 가져온 이미지도 관리할 수 있다.

도커 컨테이너(Docker Container)

실행 가능한 이미지 인스턴스다.

컨테이너는 컨테이너 간의 격리된 환경에서 실행되며 호스트와는 독립적으로 실행될 수 있다.
이를 통해 애플리케이션의 이식성과 확장성이 향상되고 리소스 사용이 최적화된다.

앞서 생성한 이미지 fun-docker를 다운받아 컨테이너로 실행할 수 있다.

도커 허브(Docker Hub)

도커 컨테이너 이미지를 공유하고 관리하기 위한 클라우드 기반 레지스트리다.

컨테이너 이미지를 업로드, 다운로드 및 공유할 수 있다.
공식적인 이미지 저장소로 다양한 언어, 프레임워크, 데이터베이스 등의 컨테이너 이미지를 제공한다.

개인 및 조직용 계정을 제공해 이미지를 관리하고 접근 권한을 제어할 수 있다.

도커 파일(Docker File)

도커 이미지를 만들고 빌드하기 위한 텍스트 파일이다.

컨테이너 이미지를 구성하는데 필요한 모든 단계와 명령을 정의한다.
일반적으로 기본 이미지를 저장하고, 필요한 패키지를 설치하고, 파일을 복사하며, 명령을 실행하는 등의 작업을 수행한다.

각 명령은 도커 파일에서 한 줄씩 작성되며, 이전 단계의 결과를 기반으로 수행된다.

반복적이고 일관적인 컨테이너 이미지 빌드 프로세스를 자동화할 수 있다.
도커 파일을 작성하고 빌드하면 도커 엔진이 자동으로 이미지를 생성하고 저장할 수 있다.


References
https://adjh54.tistory.com/352

0개의 댓글