[참고 사이트]
- [Docker] Docker 이해하기 -1 : 기초 이론(아키텍처, 흐름, 주요 용어)
1. 아키텍처 및 흐름
(1) 역할
Docker를 이용하여 ‘클라이언트 - 서버’를 구성하는 아키텍처입니다.

① Client 역할
- Docker 명령어를 사용하여 컨테이너를 실행, 관리, 모니터링하고, 이미지를 빌드하거나 다운로드할 수 있습니다. 또한 Docker 명령어를 통해 Docker Host와 상호작용 하는 역할을 합니다.
② Docker Host 역할
- Docker 컨테이너를 실행하는 데 사용되는 가상머신을 의미합니다.
- Docker 데몬을 실행하여 컨테이너를 생성, 시작, 중지 및 관리를 수행하는 역할을 수행합니다.
- Client의 요청을 받아들이고 컨테이너를 생성, 시작, 중지, 제거하는 등의 작업을 수행합니다. 또한, 호스트 운영 체제의 리소스를 사용하여 컨테이너를 실행하고 관리합니다.
③ Docker Registry 역할
- Docker 이미지를 저장하고 관리하는 중앙 집중식 저장소입니다.
- 공식적인 도커 레지스트리로, 도커 허브(Docker Hub)를 통해서 Docker 이미지를 공유하고 검색할 수 있도록 합니다.
- 또한, 개인이나 기업은 독립적인 도커 레지스트리를 구축하여 이미지를 안전하게 저장하고 관리할 수 있습니다.
(2) Docker 클라이언트, 도커 호스트, 도커 레지스트리 간 흐름
① Client → Docker Host
- 클라이언트(Client)는 도커 명령어(Docker run, build, pull, …)를 사용하여 도커 호스트(Docker Host)에 요청을 보냅니다.
② Docker Host
- 도커 호스트(Docker Host)는 클라이언트(Client)의 요청을 받아들이고 해당 요청에 따라 컨테이너를 생성, 중지, 제거하거나 이미지를 관리합니다.
③ Docker Host → Registry
- 만약 클라이언트(Client)가 이미지를 생성하거나 업로드하려면, 도커 호스트(Docker Host)는 해당 이미지를 도커 레지스트리(Registry)에 업로드합니다.
④ Registry
- 도커 레지스트리(Registry)는 이미지를 저장하고 관리하는 중앙 집중식 저장소입니다. 도커 호스트(Docker Host)에서는 도커 레지스트리(Registry)에 이미지를 업로드하거나 다운로드할 수 있습니다.
⑤ Docker Host → Client
- 컨테이너가 종료되면, 도커 호스트(Docker Host)는 해당 컨테이너의 상태와 결과를 클라이언트(Client)에게 반환합니다. 이러한 과정들을 통하여 클라이언트, 도커 호스트, 도커 레지스트리는 도커 환경에서 상호작용하며 이미지 업로드와 다운로드, 컨테이너의 생성과 관리 등의 작업을 수행합니다.
(3) Docker 명령어
- Client에서 Docker를 사용하는 명령어는 아래 표와 같습니다.
명령어
|
설명
|
docker run
|
Docker 컨테이너를 실행합니다.
|
docker build
|
Docker 이미지를 빌드합니다.
|
docker pull
|
Docker 이미지를 다운로드하여 로컬 Docker 환경에 저장합니다.
|
2. Docker 주요 용어
용어
|
분류
|
설명
|
도커 클라이언트(Docker Client)
|
아키텍처 요소
|
도커를 사용하기 위한 커맨드 라인 도구입니다. 사용자는 도커 클라이언트를 통해 도커 호스트와 상호 작용하고, 도커 이미지를 관리하며, 도커 컨테이너를 실행, 중지, 삭제 등을 할 수 있습니다.
|
도커 호스트(Docker Host)
|
아키텍처 요소
|
도커 이미지를 저장하고, 도커 컨테이너를 실행하며, 도커 클라이언트와 통신합니다.
|
도커 레지스트리(Docker Registry)
|
아키텍처 요소
|
도커 이미지를 저장하는 중앙 저장소입니다. 도커 클라이언트는 도커 레지스트리에서 이미지를 검색하고, 푸시하고, 풀(pull)할 수 있습니다.
|
|
|
|
도커 데몬(Docker Deamon)
|
구성요소
|
도커 호스트에서 실행되며, 도커 클라이언트와 상호 작용하고, 도커 이미지와 컨테이너를 관리합니다.
|
도커 이미지(Docker Image)
|
구성요소
|
도커 컨테이너를 실행하는 데 필요한 파일과 설정을 포함하는 가볍고 독립적인 실행 가능한 패키지입니다. 도커 레지스트리에서 가져올 수 있고, 도커 파일을 사용하여 빌드할 수도 있습니다.
|
도커 컨테이너(Docker Container)
|
구성요소
|
도커 이미지의 인스턴스입니다. 격리된 환경에서 실행되며, 운영 체제 수준의 가상화 기술을 사용하여 프로세스를 격리합니다.
|
도커 허브(Docker Hub)
|
구성요소
|
도커 커뮤니티에서 제공하는 공개적인 도커 레지스트리입니다. 도커 허브에서는 다양한 도커 이미지를 검색하고, 공유하고, 다운로드할 수 있습니다.
|
도커 파일(Docker File)
|
구성요소
|
도커 이미지를 빌드하기 위한 텍스트 파일입니다. 도커 이미지를 구성하는 명령어와 설정이 포함되어 있습니다. 도커 파일을 사용하면 반복적인 이미지 빌드를 자동화할 수 있습니다.
|
(1) 도커 클라이언트(Docker Client)
- 도커 컨테이너와 상호작용을 하기 위한 커멘드 라인 도구입니다.
- 도커 클라이언트를 사용하면 도커 호스트와 통신하여 도커 컨테이너의 생성, 실행, 관리 등을 할 수 있습니다.
- 다양한 명령어와 옵션을 제공하여 도커 환경을 효율적으로 관리할 수 있도록 도와줍니다.

docker 명령어
|
설명
|
docker -v
|
docker 버전을 확인합니다.
|
docker ps -a
|
docker의 컨테이너 목록을 확인합니다.
|
docker pull [docker image]
|
docker의 이미지를 다운로드 받습니다.
|
docker build
|
docker 이미지를 빌드합니다.
|
docker push
|
docker 이미지를 레지스트리에 업로드합니다.
|
docker run
|
docker 이미지를 기반으로 컨테이너를 생성하고 실행시킵니다.
|
docker login
|
docker 계정 로그인을 수행합니다.
|
docker image ls
|
docker 이미지 목록들을 확인합니다.
|
docker tag
|
docker 이미지에 이름 또는 태그를 할당합니다.
|
docker pull
|
docker 이미지를 레지스트리에서 가져옵니다.
|
(2) 도커 호스트(Docker Host) = 도커 서버(Docker Server)
- 도커 컨테이너를 실행하는 데 사용되는 시스템입니다. 도커 엔진이 설치되어 있는 머신 또는 가상 머신을 의미합니다.
- 클라이언트로부터 명령어를 전달받아 컨테이너의 생성, 실행, 관리를 담당하며, 도커 이미지를 저장하고 컨테이너 간 통신을 관리합니다.
- 도커 호스트는 호스트 운영 체제와 네트워크와 상호작용하며, 컨테이너가 실행되는 환경을 제공합니다.

(3) 도커 레지스트리(Docker Registry)
- 도커 이미지를 저장하고 관리하기 위한 중앙 저장소입니다. 도커 이미지는 컨테이너화된 애플리케이션을 실행하기 위한 파일 시스템과 실행 환경을 포함하고 있습니다.
- 도커 레지스트리는 이러한 이미지들을 중앙에서 관리하고 공유할 수 있는 플랫폼입니다.
- 도커 레지스트리를 사용하면 이미지를 쉽게 관리하고 배포할 수 있으며, 여러 사용자와 협업하여 이미지를 공유할 수도 있습니다.

(4) 도커 데몬(Docker Deamon)
- 클라이언트에서 요청한 ‘도커 명령어를 처리’하고 도커 컨테이너를 관리하는 백그라운드 프로세스입니다.
- 도커 엔진과 상호 작용하여 컨테이너의 생성, 실행, 중단, 삭제 등을 처리합니다.
- 주로 서버에서 실행되며, 도커 API 요청을 받아들이고 이미지, 컨테이너, 네트워크 등의 관리를 담당합니다. 또한, 도커 데몬은 컨테이너의 생명주기를 관리하고 리소스 할당, 네트워크 연결 등의 작업을 처리합니다.

(5) 도커 이미지(Docker Image)
- 도커 컨테이너를 실행하기 위한 파일과 설정 정보를 포함하는 컨테이너의 템플릿을 의미합니다.
- 자신만의 이미지를 가질 수 있고 다른 사람이 만든 이미지를 가져와 사용할 수도 있습니다. 그리고 이 이미지는 레지스트리에 게시됩니다.
- 이미지는 도커 파일(Dockerfile)이라는 텍스트 파일에 정의되며, 도커 이미지를 생성하는 데 사용됩니다.
① 도커 레지스트리에서 관리되고 저장됩니다.
- 도커 허브는 도커가 제공하는 공개 레지스트리로, 다른 사람들과 도커 이미지를 공유하고 검색할 수 있는 장소입니다.
- 도커 허브 이외에도 도커 엔터프라이즈 에디션을 사용하여 개인적인 레지스트리를 구축할 수도 있습니다.
② 컨테이너를 생성하고 실행하기 위해 사용됩니다.
- 도커 클라이언트를 사용하여 이미지를 다운로드하고 컨테이너를 생성할 수 있습니다.
- 이미지는 컨테이너의 기반이 되며, 여러 개의 컨테이너를 동시에 실행하거나 스케일링할 수도 있습니다.
③ 애플리케이션을 쉽게 배포하고 관리할 수 있는 강력한 도구입니다.
- 이미지를 빠르게 구축하고 공유함으로써 개발과 운영의 효율성을 높일 수 있습니다.

(6) 도커 컨테이너(Docker Container)
- 실행 가능한 이미지 인스턴스를 의미합니다.
- 컨테이너는 컨테이너 간의 격리된 환경에서 실행되며, 호스트와는 독립적으로 실행될 수 있습니다. 이를 통해 애플리케이션의 이식성과 확장성이 향상되고, 리소스 사용이 최적화됩니다.

(7) 도커 허브(Docker Hub)
- 도커 컨테이너 이미지를 공유하고 관리하기 위한 클라우드 기반 레지스트리입니다.
- 도커 허브를 사용하면 컨테이너 이미지를 업로드, 다운로드 및 공유할 수 있습니다. 또한 도커 허브는 공식적인 이미지 저장소로서 다양한 언어, 프레임워크, 데이터베이스 등의 컨테이너 이미지를 제공합니다.
- 사용자는 도커 허브에서 이미지를 검색하고 필요한 이미지를 사용할 수 있습니다. 도커 허브는 개인 및 조직용 계정을 제공하여 이미지를 관리하고 접근 권한을 제어할 수도 있습니다. 도커 허브는 도커 생태계에서 핵심적인 역할을 담당하며, 컨테이너 기반 애플리케이션 개발과 배포를 위한 필수 도구입니다.
(8) 도커 파일(Dockerfile)
- 도커 이미지를 만들고 빌드하기 위한 텍스트 파일을 의미합니다. 이는 컨테이너 이미지를 구성하는데 필요한 모든 단계와 명령을 정의합니다.
- 도커 파일은 일련의 명령을 작성하여 이미지를 빌드하는 방법을 지정합니다. 일반적으로 도커 파일은 기본 이미지를 지정하고, 필요한 패키지를 설치하고, 파일을 복사하며, 명령을 실행하는 등의 작업을 수행합니다.
- 각 명령은 도커 파일에서 한 줄씩 작성되며, 이전 단계의 결과를 기반으로 수행됩니다.
- 도커 파일을 사용하면 반복적이고 일관적인 컨테이너 이미지 빌드 프로세스를 자동화할 수 있습니다. 도커 파일을 작성하고 빌드하면 도커 엔진이 자동으로 이미지를 생성하고 저장할 수 있습니다.
명령어
|
설명
|
FROM
|
베이스 이미지 지정
|
RUN
|
이미지를 지정하면서 실행할 명령 지정
|
CMD
|
컨테이너의 어플 지정 ( 컨테이너 시작할 때 실행할 명령어 )
|
LABEL
|
이미지의 라벨 지정
|
EXPOSE
|
컨테이너의 포트 지정
|
ENV
|
컨테이너의 환경 변수 지정
|
ADD
|
이미지 생성 시 파일/디렉토리 추가
|
COPY
|
이미지 생성 시 파일 복사
|
ENTRYPOINT
|
컨테이너의 어플 지정 ( 컨테이너 시작할 때 실행할 명령어 )
|
VOLUME
|
컨테이너의 볼륨 지정
|
USER
|
컨테이너의 사용자 지정
|
WORKDIR
|
컨테이너 작업 디렉토리 지정
|
ARG
|
Dockerfile 안의 변수
|
ONBUILD
|
빌드 완료 후 실행되는 명령
|
STOPSIGNAL
|
종료 시그널 설정
|
HEALTHCHECK
|
컨테이너의 상태 체크
|
SHELL
|
기본 쉘 설정
|
MAINTAINER
|
이미지 작성자 명시
|
'Docker' 카테고리의 다른 글
[Docker] 리눅스에 Docker 설치 (0) | 2025.02.19 |
---|---|
[Docker] 윈도우에 Docker 설치(Home 포함) (0) | 2025.02.19 |
[Docker] 도커 개념 설명 | 도커는 왜 사용하는 걸까? (0) | 2025.02.19 |
Docker Compose File (0) | 2025.02.18 |
도커 사용법 (1) | 2025.02.18 |