DevOpsMedium#405
Docker와 가상 머신(VM)의 주요 차이점은 무엇인가요?
#Docker#VM#컨테이너#가상화
답변 포인트
각 방식이 운영체제를 포함하는지, 격리와 실행 비용이 어떻게 다른지 떠올려보세요.
정답 및 해설
빠른 요약
애플리케이션을 격리된 환경에서 실행하기 위해 Docker 컨테이너와 가상 머신(VM)을 사용할 수 있지만, 작동 방식에는 근본적인 차이가 있습니다. ## 가상 머신 (Virtual Machine) 하드웨어 수준의 가상화를 수행하며, 각 VM은 독립적인 **게스트 운영체제(Guest OS)**를 포함합니다.
애플리케이션을 격리된 환경에서 실행하기 위해 Docker 컨테이너와 가상 머신(VM)을 사용할 수 있지만, 작동 방식에는 근본적인 차이가 있습니다.
가상 머신 (Virtual Machine)
하드웨어 수준의 가상화를 수행하며, 각 VM은 독립적인 **게스트 운영체제(Guest OS)**를 포함합니다.
- 구조: 하드웨어 → 호스트 OS → 하이퍼바이저 (Hypervisor) → 게스트 OS → 애플리케이션
- 장점:
- 완전한 격리 제공 (보안성이 매우 높음)
- 서로 다른 운영체제를 하나의 호스트에서 실행 가능
- 단점:
- 게스트 OS가 필요하므로 무겁고 리소스(CPU, RAM, 디스크) 소모가 큼
- 부팅 속도가 느림 (OS 부팅 필요)
Docker 컨테이너 (Container)
OS 수준의 가상화를 수행하며, 호스트 OS의 커널(Kernel)을 공유합니다.
- 구조: 하드웨어 → 호스트 OS → Docker Engine → 컨테이너 (애플리케이션 + 라이브러리)
- 장점:
- 매우 가볍고 리소스 효율적 (OS를 공유하므로)
- 실행 및 부팅 속도가 매우 빠름 (프로세스 시작 수준)
- "한 번 빌드하면 어디서든 실행(Build once, run anywhere)" 가능 (이식성)
- 단점:
- 호스트 OS 커널을 공유하므로 VM에 비해 격리 수준이 낮음
- 호스트와 다른 커널을 사용하는 환경(예: Windows에서 Linux 전용 컨테이너)에서는 별도의 가상화 계층(WSL2 등)이 필요함
비교 요약
| 구분 | 가상 머신 (VM) | Docker 컨테이너 |
|---|---|---|
| 가상화 수준 | 하드웨어 수준 | OS/커널 수준 |
| 격리 정도 | 매우 높음 | 높음 (커널 공유) |
| 리소스 소모 | 매우 큼 (OS 포함) | 매우 작음 (프로세스 단위) |
| 부팅 속도 | 느림 (분 단위) | 매우 빠름 (초 단위) |
| 이식성 | 낮음 (이미지 크기 큼) | 매우 높음 (이미지 작음) |