컨테이너는 커널을 공유하고, VM은 OS를 분리한다

같은 격리처럼 보여도 보호 경계가 다르다. 컨테이너는 빠르고 가볍고, VM은 더 무겁지만 커널 경계가 강하다.

Container

호스트 커널 공유

Container A Container B
namespace · cgroup · seccomp 공유 Host kernel Hardware
격리 수단 namespace로 보이는 자원을 나누고 cgroup으로 사용량을 제한한다.
장점 시작이 빠르고 이미지 배포와 스케일 아웃이 쉽다.
주의 커널 취약점과 privileged 권한은 호스트 경계를 약하게 만든다.
VM

guest OS와 커널 분리

VM A app VM B app
Guest kernel A Guest kernel B
Hypervisor 격리 경계 Hardware
격리 수단 hypervisor가 가상 하드웨어를 제공하고 각 VM이 자기 OS를 실행한다.
장점 커널 경계가 강해 서로 다른 OS와 높은 보안 요구에 맞다.
비용 부팅, 메모리, 이미지 크기 부담이 컨테이너보다 크다.
namespace PID, mount, net처럼 컨테이너 안에서 보이는 세계를 분리한다.
cgroup 메모리, CPU, I/O, 프로세스 수를 제한해 운영 장애 전파를 막는다.
security rootless, seccomp, MAC 정책으로 커널 공유 위험을 낮춘다.
일반 웹 서비스 컨테이너에 자원 제한과 기본 보안 정책을 적용한다.
멀티테넌트 Kata Containers나 Firecracker처럼 VM 경계를 추가로 고려한다.
판단 질문 커널 공유 위험을 받아들일 수 있는지 먼저 확인한다.