C.W.K.
Stream
Lesson 02 of 07 · published

VM vs Container — Kernel 공유 vs Hypervisor

~18 min · foundations, isolation

Level 0Container 호기심
0 XP0/36 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

워크로드 격리하는 두 가지 방식

VM 이랑 container 는 같은 문제를 풀어: 한 머신에서 여러 워크로드를 서로 안 부딪히게 돌리기. 접근법이 근본적으로 달라.

Virtual Machine — 인스턴스마다 OS 통째로

Hypervisor (VMware ESXi, KVM, VirtualBox, Hyper-V) 가 하드웨어랑 guest VM 사이에 앉아. 각 VM 은 OS 통째로 — 자체 kernel, init, userland. 격리는 하드웨어 수준. VM 끼리 메모리/syscall 못 봐.

Container — kernel 공유, namespace 로 격리

Container 는 호스트 kernel 을 공유해. 격리는 Linux namespace (PID, network, mount, hostname, IPC, user ID 따로 보기) + cgroup (CPU/메모리/IO 한도) 로 만들어. Guest OS 없어. Hypervisor 없어. 그냥 process 묶음이 혼자 머신에 있다고 착각하는 거야.

트레이드오프 표

측면VMContainer
부팅분 단위밀리초
이미지 크기GB (OS 통째)MB (앱 + 라이브러리만)
밀도호스트당 ~10호스트당 100s
격리강함 (kernel 따로)process 수준 (kernel 공유)
오버헤드무거움거의 없음
OS 자유도아무 OSLinux 호스트엔 Linux

웹 서비스, DB, 배치 작업 같은 대부분의 앱 워크로드는 container 격리로 충분해. 다른 kernel 필요하거나, 멀티 테넌트 강격리가 필요하거나, Linux 호스트에 Windows guest 가 필요할 때 VM 써.

Code

kernel 공유 직접 보기·bash
# On a Linux host
uname -r
# 6.5.0-1018-aws

# Inside a container
docker run --rm alpine uname -r
# 6.5.0-1018-aws    ← same kernel!

# A VM would print something completely different —
# the guest's own kernel, not the host's.

External links

Exercise

팀 워크로드: Python 웹 서비스 50개 + 작은 Postgres 3개. 4-5 문장으로 — VM-per-service 아키텍처냐 container-per-service 아키텍처냐 — 한 쪽 편들어서 주장해봐. 부팅 시간, 밀도, 격리 요구, 운영 측면 (로깅/패칭/스케일링) 하나 짚어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.