개발일기
(5)컨테이너 가상화 (쉬운 도커) 본문
1. 왜 컨테이너 가상화가 더 선호될까?
모던 애플리케이션에서는 **“가볍고 빠른 실행”**이 핵심 요구사항이다.
서비스 기능이 자주 바뀌고, 배포·확장이 잦기 때문에 인프라도 그만큼 빠르게 뜨고, 적은 자원으로 많이 돌릴 수 있어야 한다.
컨테이너 가상화는 바로 이 점에서 하이퍼바이저 기반 가상머신(VM) 보다 유리하다.

2. 하이퍼바이저 가상화 방식
- 구조:
- 물리 서버 위에 Host OS
- 그 위에 Hypervisor가 올라감
- Hypervisor 위에 Guest OS + 앱이 각각 독립적으로 존재
- 특징:
- Guest OS마다 자체 커널을 가진다.
- 시스템 콜이 Guest OS → Hypervisor → Host OS → 하드웨어를 거치기 때문에
- 요청 경로가 길다 → 오버헤드 큼
- VM 부팅 시 OS 부팅 시간이 필요 → 시작 속도 느림
- 대신 커널 자체가 완전히 분리되어 있어
- 보안·격리 측면에서는 상대적으로 더 강하다.
- Host OS와 다른 종류의 OS도 올릴 수 있다. (예: Windows 위에 Linux VM)
3. 컨테이너 가상화(LXC, Docker)의 핵심

컨테이너는 하이퍼바이저 없이, Host OS의 커널을 그대로 공유하면서
프로세스 수준에서 격리하는 방식이다.
(1) 사용하는 커널 기능
- Namespace
- 프로세스, 파일시스템, 네트워크, 사용자, 호스트네임 등의 리소스를
- “각 컨테이너별로 따로 가진 것처럼 보이게” 격리해 주는 기능.
- cgroups(Control Groups)
- 각 컨테이너(프로세스 그룹)마다
- CPU
- 메모리
- 디스크 I/O
- 네트워크 대역폭
- 같은 리소스 사용량을 제한·관리하는 기능.
- 각 컨테이너(프로세스 그룹)마다
이 두 가지 기능(LXC 기반)을 조합해서 만든 격리된 실행 공간을 우리가 컨테이너라고 부른다.
4. 컨테이너 방식의 장점

1) Host OS 커널을 공유 → 오버헤드 감소
- 컨테이너는 자체 커널이 없다.
- 모든 컨테이너가 Host OS의 커널을 공유하므로
- 시스템 콜이 곧바로 Host OS 커널로 전달
- Hypervisor 레이어를 거치지 않음
- 결과적으로:
- 오버헤드가 적다
- 하드웨어 리소스를 더 효율적으로 사용할 수 있다.
2) 부팅 속도 매우 빠름
- VM:
- Guest OS 부팅 필요 → 수 초 ~ 수십 초
- 컨테이너:
- OS를 새로 켜는 게 아니라,
- 이미 떠 있는 커널 위에 프로세스를 새로 실행하는 개념
- 보통 수 ms ~ 수 초 수준으로 기동 가능
- 이 덕분에:
- 오토스케일링, 롤링 업데이트, 블루/그린 배포 등
- 모던 배포 전략에 최적화되어 있다.
5. 컨테이너 방식의 단점 (상대 비교)
- 보안/격리 측면
- 모든 컨테이너가 Host OS 커널을 공유하므로
- 이론적으로는 커널 취약점 등에 더 민감할 수 있다.
- OS 다양성 제약
- Host OS가 Linux라면 컨테이너도 기본적으로 Linux 환경이어야 한다.
- 하이퍼바이저 VM처럼
- “Host는 Windows, Guest는 Linux” 이런 조합은 어렵다.
6. 한 줄 정리
- 하이퍼바이저 가상화
- 각 VM이 독립 커널 보유
- → 부팅 느림, 오버헤드 큼, 보안·격리 강함, 이기종 OS 가능
- 컨테이너 가상화
- Host OS 커널 공유 + namespace/cgroups로 격리
- → 부팅 빠름, 오버헤드 적음, 자원 효율 좋음, 모던 앱·배포에 최적
그리고 Docker는 이런 커널 기반 가상화(LXC)를 개발자가 쉽게 쓰도록 추상화한 도구라고 이해하면 된다.
'서버 & 클라우드 > 도커' 카테고리의 다른 글
| (8) 쉬운도커 이미지 (0) | 2025.12.21 |
|---|---|
| (7) [쉬운도커] 컨데이터 실행 (0) | 2025.12.20 |
| (4) 가상화 기술 & 하이퍼바이저 가상화 (2) | 2025.11.15 |
| (3) 애플리케이션 서버 (0) | 2025.11.14 |
| (1) 도커에 실행중인 컨테이너 모두 삭제하는 방법 (2) | 2025.11.14 |