Docker는 애플리케이션을 컨테이너(Container) 단위로 실행하고 관리할 수 있는 오픈소스 플랫폼이다.
마이크로서비스 아키텍처(MSA)나 DevOps, CI/CD 환경에서 활용도가 높으며, 동일한 실행 환경을 이미지로 패키징하여 언제 어디서든 실행할 수 있도록 한다.
Docker의 핵심 개념 요약
개념 | 설명 |
Docker란? | 컨테이너 단위로 애플리케이션을 실행 및 배포하는 플랫폼 |
주요 구성요소 | Dockerfile, Image, Container, Docker Engine, Docker Hub |
특징 | 계층별 분리, 이미지 기반 환경, 빠른 배포, 자원 효율성 |
활용 사례 | MSA, DevOps, CI/CD, 테스트 환경, 경량화된 서비스 운영 등 |
Docker의 주요 특징
1. 계층별 분리
프론트엔드, 백엔드, 데이터베이스 등의 애플리케이션 계층을 각각 별도의 컨테이너로 분리하여 실행한다.
컨테이너 간 통신은 Docker 네트워크로 처리한다.
2. 이미지 기반 인프라
애플리케이션을 실행하는 환경(runtime)을 이미지(Image) 형태로 패키징한다.
이 이미지를 기반으로 어디서든 동일한 실행 환경을 구성할 수 있다.
3. Docker Hub 공유
Docker Hub를 통해 이미지를 공개 또는 비공개로 공유할 수 있다.
공식 이미지(nginx, mysql, node 등) 또는 사용자 정의 이미지를 사용할 수 있다.
Docker Workflow
[Dockerfile 작성]
|
| Build
v
[Docker Image 생성]
|
| Push
v
[Docker Hub 업로드]
|
| Pull
v
[Docker Container로 실행]
단계 | 설명 |
Dockerfile 작성 | 실행 환경(OS, 런타임, 명령어 등)을 정의한다 |
이미지 생성 | Dockerfile을 기반으로 애플리케이션 이미지를 빌드한다 |
이미지 업로드 | Docker Hub 또는 프라이빗 저장소에 업로드하여 공유한다 |
이미지 다운로드 | 다른 환경에서 이미지를 Pull하여 사용할 수 있다 |
컨테이너 실행 | 이미지를 기반으로 컨테이너를 실행한다 (docker run) |
컨테이너 vs VM 가상화 비교
항목 | 컨테이너 가상화 | 전통적 VM 가상화 |
가상화 방식 | OS 레벨 가상화 (커널 공유) | 하드웨어 가상화 (전체 OS 포함) |
기반 기술 | Linux Namespace, cgroup | Hypervisor (VMware, KVM 등) |
운영체제 | 호스트 OS의 커널을 공유함 | VM마다 OS를 별도 설치 |
무게/속도 | 가볍고 빠르게 동작 | 무겁고 느림 |
리소스 사용 | 적음 (메모리, 디스크 절약) | 많음 (각 VM이 자원 소비) |
실행 속도 | 수 초 내 실행 가능 | 수 분 이상 소요 |
격리 수준 | 낮음 (보안 한계 있음) | 높음 (완전 격리된 환경) |
활용 사례 | MSA, DevOps, CI/CD | 보안이 중요한 환경, 다양한 OS 테스트 |
Docker 내부 구성 요소
구성요소 | 역할 |
dockerd | Docker 데몬, 명령 수신 및 전체 흐름 제어 |
containerd | 컨테이너의 라이프사이클(생성, 실행, 중지 등)을 관리 |
runC | 실제 리눅스 컨테이너를 생성하고 실행하는 표준 런타임 |
Docker CLI | 사용자 명령을 입력하고 처리하는 인터페이스 |
swarmkit | 컨테이너 클러스터(오케스트레이션) 관리 기능 |
buildkit | 이미지를 효율적으로 빌드하는 빌드 엔진 |
libnetwork | 컨테이너 간 네트워크 설정 및 관리 |
logs/storage/image mgmt | 로그 수집, 저장소 관리, 이미지 배포 등 관리 기능 |
DCT (Docker Content Trust) | 이미지의 무결성과 신뢰성을 검증하는 기능 |
컨테이너화 관련 기술 요약
기술 요소 | 설명 |
Namespace | 컨테이너별로 프로세스, 네트워크 등 리소스를 격리 |
cgroup | CPU, 메모리 등 자원 사용량을 제한하고 관리 |
runC | 컨테이너 실행을 담당하는 저수준 런타임 |
containerd | 컨테이너의 상태를 관리하고 유지 |
dockerd | 명령 수신과 전체 Docker 흐름을 담당 |
소켓 통신 | 커널과의 통신은 유닉스 소켓 등으로 처리함 |
Docker는 개발과 배포 환경에서 경량화, 이식성, 신속성을 모두 제공하는 핵심 플랫폼이다.
기존 VM 기반 가상화보다 빠르고 자원 효율적이며, 특히 MSA 구조와 CI/CD 자동화, 클라우드 환경에서 필수적인 기술로 자리 잡았으며,
대다수의 IT 회사에서 일반적으로 사용하고 있는 기술이다.
반응형
'Infra > Docker & Kubernetes' 카테고리의 다른 글
Docker CLI 명령어 총정리 (0) | 2025.06.17 |
---|---|
Docker Hub 및 Private Registry에 이미지 Push하는 방법 (2) | 2025.06.08 |
Docker 이미지 구조와 흐름 이해하기 (0) | 2025.06.06 |
컨테이너란? 개발자라면 꼭 알아야 할 기초 개념 (5) | 2025.05.29 |
댓글