운영체제 용어 사전
가상화하이퍼바이저 · VM · Type 1 · Type 2

가상 머신

하드웨어를 통째로 흉내 내 게스트 OS를 돌리는 방식. 컨테이너보다 격리가 강하고 무겁다.

하드웨어를 통째로 흉내 내 그 위에서 완전한 게스트 OS를 돌리는 방식.

하이퍼바이저 두 종류

  • Type 1 (베어메탈) — 하드웨어 위에 직접 — ESXi · Hyper-V · KVM

    • 성능이 좋고 운영 환경에서 쓴다
  • Type 2 (호스트형) — 호스트 OS 위에서 — VirtualBox · VMware Workstation

    • 설치가 쉽고 개발·테스트에 쓴다

컨테이너와의 결정적 차이

  • 가상 머신 — 게스트 커널을 각자 갖는다

    • 부팅에 수십 초, 이미지가 GB 단위
    • 커널까지 격리되므로 보안 경계가 강하다
    • 다른 OS 를 돌릴 수 있다 (리눅스 위에 윈도우)
  • 컨테이너 — 호스트 커널을 공유한다

    • 시작이 밀리초, 이미지가 MB 단위
    • 커널 취약점이 곧 탈출 경로가 될 수 있다
    • 같은 커널 계열만 가능하다

컨테이너를 떠받치는 커널 기능

  • 네임스페이스 — 무엇이 '보이는가' 를 격리

    • PID · 네트워크 · 마운트 · 사용자 · UTS · IPC
  • cgroup — 무엇을 '얼마나 쓰는가' 를 제한

    • CPU · 메모리 · I/O
  • 둘은 원래 있던 리눅스 기능이고, 컨테이너 런타임이 이를 조합한 것이다

  • "컨테이너는 프로세스일 뿐" 이라는 말이 여기서 나온다

실무 선택

격리 강도가 중요하다(멀티테넌트·신뢰 못 할 코드) → VM

  • 밀도와 기동 속도가 중요하다 — → 컨테이너 둘 다 필요하다 → Firecracker·gVisor 같은 경량 VM

    • (컨테이너처럼 가볍고 VM 처럼 커널이 분리된다)

트랩-앤-에뮬레이트와 하드웨어 지원

고전적 가상화의 원리

  • 게스트가 특권 명령을 실행하면 트랩이 발생
  • 하이퍼바이저가 가로채 흉내 낸 뒤 돌려준다

x86 은 원래 이것이 불가능했다

  • 일부 명령이 유저 모드에서 트랩 없이 '조용히 다르게' 동작했다
  • 준가상화(Xen) 나 바이너리 변환(VMware) 으로 우회했다

VT-x · AMD-V 가 게스트 전용 실행 모드를 하드웨어로 제공하면서 전가상화가 빠르고 단순해졌다

메모리와 I/O 가상화

  • 메모리 — 게스트 가상 → 게스트 물리 → 호스트 물리, 두 단계 변환
    • EPT/NPT 가 하드웨어로 처리 (없으면 섀도 페이지 테이블)
  • I/O — · 완전 에뮬레이션 — 느리다
    • virtio 반가상화 드라이버 — 게스트가 가상화를 인지해 빠르다
    • SR-IOV 패스스루 — 물리 장치를 직접 할당, 가장 빠르다

컨테이너 탈출의 현실적 경로

  • 특권 컨테이너(--privileged) 실행

  • 도커 소켓을 컨테이너에 마운트 (= 호스트 전체 권한)

  • 호스트 경로를 rw 로 마운트

  • 커널 취약점

  • 대부분은 커널 버그가 아니라 설정 실수다

  • non-root 실행 · capability 최소화 · seccomp 프로파일이 기본 방어

면접 함정

  • "컨테이너는 가벼운 VM" → 커널 공유 여부가 근본적으로 다르다.
  • "컨테이너도 커널을 갖는다" → 호스트 커널을 쓴다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 가상화·컨테이너 — VM·namespace·cgroup