가상머신(VM)
VM은 하이퍼바이저 위에서 동작하며, 각 VM이 자기만의 완전한 운영체제(커널 포함)를 갖습니다. 그만큼 격리 수준이 강력하지만, OS 전체를 부팅해야 해서 기동이 느리고 자원 소모가 큽니다.
컨테이너
컨테이너는 호스트 OS의 커널을 공유하면서, 애플리케이션 실행에 필요한 라이브러리·설정만 패키징합니다. 커널을 새로 띄울 필요가 없어 기동이 훨씬 빠르고 가볍습니다.
격리 수준의 차이
VM은 하드웨어 수준까지 완전히 분리되지만, 컨테이너는 프로세스 수준의 격리(네임스페이스, cgroup)에 의존합니다. 보안이 특히 중요한 멀티테넌시 환경에서는 이 차이가 설계 결정에 영향을 줍니다.
"둘 중 하나"가 아니라 "함께"
실무에서는 VM 위에 컨테이너를 올리는 구성이 흔합니다. VM으로 물리 자원을 안전하게 나누고, 그 안에서 컨테이너로 애플리케이션을 빠르게 배포·확장하는 식입니다. 최근에는 하이퍼바이저와 컨테이너 런타임을 같은 플랫폼에서 함께 관리하는 기술도 등장했습니다.
선택 기준 정리
- 강한 격리·레거시 OS 호환이 중요: VM
- 빠른 배포·확장, 마이크로서비스: 컨테이너