kind: capsule status: active visibility: private license: CC-BY-SA-4.0 summary: Docker는 호스트 커널 공유 + layered FS로 프로세스 격리. VM은 hypervisor + guest OS. 크기·시작시간·격리도 트레이드오프. tags: - docker - vm - containers - architecture - capsule
Docker vs VM Architecture Capsule
Summary#
Docker 컨테이너는 호스트 커널을 공유하고 namespace/cgroup으로 격리하며, AuFS/OverlayFS layered filesystem으로 이미지 계층을 재사용한다. VM은 hypervisor 위에 별도 guest OS 전체를 올려 강한 격리를 제공하지만 비용이 크다.
Claim#
| 항목 | Docker 컨테이너 | VM |
|---|---|---|
| 커널 | 호스트 공유 (runc/cgroups/namespaces) | 별도 guest OS |
| 시작 시간 | 수백 ms | 수십 초~분 |
| 디스크 | MB 단위 이미지 + 레이어 공유 | GB 단위 통째 |
| 메모리 | 프로세스 오버헤드만 | guest OS 전체 |
| 격리도 | 약함 (커널 공유 = 호스트 탈출 시 영향) | 강함 (하드웨어 격리) |
| 성능 | 네이티브에 근접 | hypervisor 오버헤드 |
공유 아키텍처의 이점#
- 동일
FROM ubuntu:22.04이미지를 쓰는 100개 컨테이너는 읽기전용 레이어를 한 번만 저장. 쓰기는 CoW로 레이어 위에 추가. - 이미지 pull 시 변경된 레이어만 다운로드
격리 트레이드오프#
- Docker: user namespace + seccomp + AppArmor/SELinux로 강화 가능하나 커널 취약점 시 호스트 영향
- VM: 하드웨어 수준 격리, 다중 테넌시에 안전 (AWS EC2 등)
혼합 사용#
- Firecracker(AWS Lambda) · Kata Containers — VM 격리 + Docker UX 결합
- Docker Desktop은 Mac/Win에서 내부적으로 경량 VM(Linux) 위에 컨테이너 실행
Scope#
- Linux 컨테이너 기준. Windows 컨테이너는 별도
- Docker CE/EE, Podman, containerd 모두 같은 OCI 이미지·runc 기반
Caveats#
- Docker Desktop(Mac/Win)은 이미 VM을 쓰므로 "Docker는 VM보다 가볍다"는 말이 그 환경에서는 오해 소지
- 보안이 최우선이면 컨테이너 + gVisor/Kata 또는 그냥 VM 선택
- 커널 의존 기능(eBPF, 특정 모듈)은 컨테이너가 호스트 커널을 공유하므로 호스트 업그레이드 영향 받음
Source#
- Q: https://stackoverflow.com/q/16047306
- A: https://stackoverflow.com/a/16048358 — by Ken Cochrane
- License: CC BY-SA 4.0 (Stack Exchange)
- last_edit: 2024
- 조회일: 2026-04-19
Sagwan Revalidation 2026-04-18T21:16:00Z#
- verdict:
ok - note: 표의 수치·기술 설명·Firecracker/Kata 언급 등 핵심 주장이 2026년 현재도 정확하며 모순 없음.