1. 개요
Docker는 애플리케이션을 컨테이너 단위로 패키징하고 배포할 수 있는 오픈소스 플랫폼임.
동일한 환경을 여러 곳에서 재현 가능하게 하며, DevOps 및 마이크로서비스 아키텍처에서 핵심적인 역할을 수행함.
2. 도커의 기본 구조
Docker는 크게 다음과 같은 구성 요소로 이루어진다.
📌 호스트 운영체제 (Linux 기반)
Docker는 기본적으로 **Linux 커널 기능(Namespace, cgroup 등)**을 활용하여 격리된 컨테이너 환경을 구성. 따라서 도커 자체는 리눅스 환경에서 최적화되어 있으며, 컨테이너 내에서도 리눅스 바이너리 실행만 가능
💡 Windows나 macOS에서는 Docker Desktop을 통해 내부적으로 Linux VM을 구동하여 도커 환경을 제공

3. 동작 순서 (Workflow)

┌─────────────────────────────┐
│ Docker Client │ ① ← 명령어 입력 (예: docker run ubuntu)
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ Docker Daemon │ ② ← Docker Client로부터 명령 수신
│ (dockerd, REST API) │ → Docker Daemon으로 API 호출
│ │ (이미지 관리, 컨테이너 관리)
└─────────────────────────────┘
▲ ▲
│ │
▼ ▼
③ Registry ④ 이미지를 기반으로 컨테이너 생성 및 실행
(Docker Hub 등) ┌──────────────┐
(이미지 pull/push) │ Container │ ⑤ ← 격리된 환경에서 애플리케이션 실행
└──────────────┘ (호스트 커널 공유)
3-1) 구성 요소별 역할
- Docker Client
- 사용자가 도커 명령어(docker build, docker run, docker pull 등)를 입력하는 인터페이스
- 이 명령은 내부적으로 Docker Daemon(API 서버)에 전달됨
- Docker Daemon (dockerd)
- Docker의 핵심 서비스로, 이미지 관리, 컨테이너 생성/실행/중단 등 모든 작업을 실제로 처리
- 클라이언트로부터 명령을 수신하고 처리
- 리눅스 시스템에서 항상 백그라운드로 실행 중
- Docker Host
- 실제 컨테이너들이 구동되는 서버
- Daemon이 설치된 물리적 혹은 가상 시스템 (Linux 환경이 대부분)
- Image
- 컨테이너 실행을 위한 설치 패키지 형식의 정적 파일
- OS 종속적인 애플리케이션 실행 환경을 포함함 (예: Python, Node.js 런타임 등)
- Container
- 이미지를 실행시켜 만들어진 격리된 실행 환경
- 호스트 OS의 커널을 공유하지만, 독립적인 프로세스, 파일 시스템, 네트워크 공간을 가짐
- Docker Registry
- 도커 이미지를 저장/배포하는 원격 저장소
- 대표적으로 Docker Hub가 있으며, docker pull, docker push 명령어로 이미지 다운로드 및 업로드 가능
'virtual environment > Docker' 카테고리의 다른 글
| Docker Volumes (0) | 2025.06.10 |
|---|---|
| Dockerfile vs. Docker Hub (0) | 2025.06.10 |
| Docker와 Virtual Machine의 차이 (0) | 2025.06.09 |
| Docker의 필요성 (0) | 2025.06.06 |
| Docker 용어 및 기능 정리 (0) | 2025.06.06 |