본문 바로가기
Infra/Docker & Kubernetes

Docker란? 컨테이너 기반 가상화 플랫폼의 핵심 이해

by 워니 wony 2025. 5. 31.

 

 

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 회사에서 일반적으로 사용하고 있는 기술이다.

반응형

댓글