PE Notes · 서비스
가상화와 컨테이너
한 물리 서버를 나누는 가상화를 두고, VM·LXC·Docker의 격리와 기동, 하이퍼바이저 유형과 이미지 생명주기를 정리합니다.
서버 한 대를 한 운영체제만 돌리던 시절은 사용률이 낮았습니다. 가상화는 그 기계를 여러 실행 환경으로 자릅니다. 은 게스트 OS를 통째로 올리고, 와 는 호스트 커널을 나누어 씁니다. 옆 노트가 오케스트레이션을 맡으면, 이 글은 세 실행 단위를 가릅니다.
세 실행 단위
위 VM은 하드웨어에 가까운 격리입니다. 부팅은 분, 이미지는 기가바이트입니다. LXC는 리눅스 커널의 네임스페이스와 cgroups로 프로세스를 가둔 초기 컨테이너입니다. Docker는 그 위에 이미지 레이어, 레지스트리, 엔진을 표준으로 올립니다. 기동은 초, 이식은 이미지가 합니다.
Type 1은 하드웨어 위에 바로 앉습니다. 성능이 우선인 전산실입니다. Type 2는 호스트 OS 위에서 개발 노트북을 나눕니다. 가 파는 가상 서버는 대개 Type 1 위의 VM입니다. 앱을 포장해 옮기는 일은 컨테이너입니다.
| 비교축 | VM | LXC | Docker |
|---|---|---|---|
| 격리 | 게스트 OS | 프로세스 | 프로세스 |
| 커널 | 각자 | 공유 | 공유 |
| 기동·크기 | 분·GB | 초·수백 MB | 초 미만·레이어 |
| 이식 | 하이퍼바이저 종속 | 중간 | 이미지 표준 |
| 보안 가정 | 두꺼움 | 중간 | 중간 |
이미지와 오케스트레이션
Docker에서 이미지는 불변 템플릿입니다. 는 그 실행입니다. 이 FROM·RUN·COPY·CMD로 빌드를 적습니다. 레지스트리가 이미지를 보관하고 엔진이 포트·볼륨을 붙입니다. “내 컴퓨터에선 됐다”는 이미지가 같아지면 사라집니다.
컨테이너가 수백이 되면 사람이 붙잡지 못합니다. 가 원하는 개수, 자가 치유, 롤링, 서비스 발견을 클러스터 선언으로 맞춥니다. 는 부하에 개수를 맞춥니다. 격리는 네임스페이스·cgroups·시스템콜 제한이 받칩니다. VM보다 얇으므로 민감 테넌트는 여전히 VM이나 샌드박스를 고릅니다.
답안은 세 단위 표, 하이퍼바이저 두 유형, 이미지≠컨테이너, 오케스트레이션이 필요한 이유를 한 장에 올립니다.