Docker와 VM의 차이
1. Docker와 VM의 기본 개념
Docker란?
Docker는 컨테이너(Container) 기술을 기반으로 한 가상화 플랫폼
하나의 OS 위에서 여러 애플리케이션을 서로 격리된 공간(컨테이너) 에서 실행할 수 있도록 도와줌
즉, “프로그램을 실행하기 위한 모든 환경(코드, 라이브러리, 설정 등)”을 묶어서 어디서든 동일하게 동작
💡 한 줄 요약: “환경 차이로 인한 문제를 없애주는 가벼운 가상화 기술”
VM (Virtual Machine)이란?
VM은 하드웨어 수준에서 가상화를 구현한 기술입니다.
하이퍼바이저(Hypervisor)를 통해 물리적인 서버 위에 여러 개의 가상의 컴퓨터(Guest OS) 를 만드는 방식
각 VM은 CPU, 메모리, 디스크를 독립적으로 가지고 있어 완전한 컴퓨터처럼 동작
💡 한 줄 요약: “하드웨어 전체를 복제한 완전한 가상 컴퓨터”
2. 구조 비교
| 항목 | Docker | VM (Virtual Machine) |
| 가상화 방식 | 운영체제(OS) 수준 | 하드웨어 수준 |
| 구성 요소 | Host OS → Docker Engine → Containers | Host OS → Hypervisor → Guest OS → Apps |
| 부팅 속도 | 초 단위 (빠름) | 수십 초 ~ 수분 (느림) |
| 리소스 사용량 | 적음 (가벼움) | 많음 (무거움) |
| OS 공유 여부 | Host OS 커널 공유 | 독립된 OS 사용 |
Docker는 Host OS의 커널을 공유하기 때문에 실행 속도가 빠르고, 메모리 사용량도 적습니다.
반면 VM은 각각의 OS를 설치해야 하므로 더 무겁고 부팅 시간도 오래 걸립니다.
3. 장단점 비교
Docker의 장점
- 컨테이너 생성 및 삭제가 빠름
- 가볍고 효율적 (하나의 서버에 수백 개 컨테이너 가능)
- 개발 → 배포까지 환경 일관성 유지
- 마이크로서비스 아키텍처에 최적화
Docker의 단점
- OS 커널을 공유하므로 보안 경계가 약함
- 완전한 OS가 아니라 제한된 환경
VM의 장점
- 완전한 격리 환경 제공 (보안성 우수)
- 서로 다른 OS를 동시에 실행 가능 (예: Windows + Linux)
- 안정적이며 검증된 기술
VM의 단점
- 부팅과 실행이 느림
- OS마다 자원을 많이 차지함
- 이미지 관리 및 배포가 번거로움
4. 보안과 격리 측면
Docker는 “프로세스 수준”에서 격리를 제공하기 때문에,
Host OS에 대한 접근 권한이 잘못 설정되면 보안 위험이 생길 수 있습니다.
반면 VM은 “하드웨어 수준”에서 완전히 분리되어 있어서,
한 VM이 해킹돼도 다른 VM이나 Host에 영향을 주기 어렵습니다.
✅ 보안이 최우선이라면 VM
⚡ 빠른 배포와 확장이 중요하다면 Docker
5. 정리하자면
Docker는 “가볍고 빠른 실행 환경”
VM은 “완전한 분리와 보안이 필요한 환경”
결국 두 기술은 대체 관계라기보단, 상호 보완적인 관계입니다.
실제 서비스에서는 “Docker로 애플리케이션을 띄우고, VM 위에서 이를 실행”하는 식으로 함께 사용되기도 합니다.