
Intro
안녕하세요. 환이s입니다 👋
이번 글에서는
가상화 기술의 대표적인 두 방식인 VM(Virtual Machine) 과
Container(Container) 의 차이에 대해 정리해 보려고 합니다.
Kubernetes 이야기를 하다 보면
항상 함께 등장하는 개념이 바로 컨테이너입니다.
그렇다면,
- 기존의 VM 기반 가상화와
- 컨테이너 기반 가상화는
시스템 구조적으로 어떤 차이가 있고,
왜 컨테이너가 Kubernetes의 핵심 기술이 되었는지
하나씩 살펴보겠습니다.
1. VM 기반 가상화 구조
먼저 공통적으로
하나의 물리 서버가 있다고 가정해 보겠습니다.
이 서버에는 기본적으로
Windows든 Linux든 Host OS(호스트 운영체제) 가 설치되어 있습니다.
VM 환경에서는 이 Host OS 위에 하이퍼바이저(Hypervisor) 를 통해 여러 개의 VM을 생성하게 됩니다.

각 VM은
- 자체적인 Guest OS를 가지고 있고
- 실제 서버처럼 독립적인 운영체제로 동작합니다.
따라서 VM 안에는
- OS
- 라이브러리
- 애플리케이션
이 모두가 포함됩니다.
이 방식의 장점은
각 VM이 완전히 독립적이기 때문에 서로 간의 영향이 거의 없다는 점입니다.
하지만 단점도 분명합니다.
- VM 하나당 OS가 필요
- 리소스 사용량 증가
- 부팅 및 확장 속도가 느림
이라는 구조적인 한계를 가지게 됩니다.
2. 컨테이너 기반 가상화 구조
컨테이너 역시 Host OS가 설치되어 있다는 점은 동일합니다.
차이점은
Guest OS를 따로 띄우지 않는다는 것입니다.
컨테이너 환경에서는
Docker와 같은 컨테이너 가상화 엔진이
OS 위에서 동작합니다.

컨테이너는
- OS 전체가 아니라
- 애플리케이션과
- 실행에 필요한 라이브러리만 포함합니다.
즉,
- 하나의 OS 커널을 공유하고
- 그 위에서 여러 컨테이너가 실행되는 구조입니다.
이로 인해 컨테이너는
- 가볍고
- 빠르게 생성되며
- 자원 효율이 매우 높습니다.
3. 개발 환경 차이와 Docker의 역할
리눅스는 배포판과 버전에 따라 기본 라이브러리 구성이 다릅니다.
예를 들어,
- Linux 6 환경에서 개발한 서비스가
- Linux 7 환경에서 실행될 경우
라이브러리 버전 차이로 문제가 발생할 수 있습니다.
컨테이너는 이 문제를 해결합니다.

Docker를 사용하면
- 서비스 실행에 필요한
- 라이브러리와 설정을
- 컨테이너 이미지로 함께 묶을 수 있습니다.
그래서 Host OS 환경이 달라도 Docker만 설치되어 있다면 동일한 실행 환경을 보장할 수 있습니다.
4. 자원 격리: namespace와 cgroups
컨테이너는 리눅스 커널의 고유 기술을 활용해 자원을 격리합니다.

- namespace
→ 프로세스, 네트워크, 파일 시스템 등
커널 영역을 분리 - cgroups
→ CPU, 메모리와 같은
자원 사용량을 제한
이를 통해
- 컨테이너 간 자원 충돌을 방지하고
- 하나의 OS 위에서도
독립적인 서비스 운영이 가능해집니다.
5. VM과 컨테이너의 구조적 차이

구조적으로 보면,
- VM
→ VM마다 OS 포함 - Container
→ OS 커널 공유
이 차이로 인해
컨테이너는 VM보다
- 훨씬 빠르고
- 가볍게 동작할 수밖에 없습니다.
다만 단점도 존재합니다.
- VM은 서로 완전히 분리되어 보안성이 높음
- 컨테이너는 OS 커널을 공유하므로
침해 시 영향 범위가 커질 수 있음
하지만 이 부분은
컨테이너 보안 기술의 발전으로
계속 보완되고 있습니다.
6. 시스템 설계 관점의 차이
전통적인 VM 기반 시스템에서는 하나의 서비스 안에 여러 모듈이 함께 포함됩니다.

특정 모듈에 부하가 걸리면
전체 서비스를 확장해야 하고,
그 결과 VM과 OS까지 함께 늘어나게 됩니다.
반면 컨테이너 기반 환경에서는
마이크로서비스 아키텍처(MSA) 가 권장됩니다.

- 서비스 기능을 모듈 단위로 분리
- 각 모듈을 컨테이너로 구성
- 필요한 부분만 확장
Kubernetes에서는
여러 컨테이너를 Pod라는 단위로 묶고
이 Pod가 배포의 최소 단위가 됩니다.
즉,
- 필요한 만큼 Pod만 확장 가능
- 자원 사용 효율 극대화
가 가능해집니다.
📝 마무리
이번 글에서는
VM과 컨테이너의 차이를
시스템 구조 관점에서 정리해 보았습니다.
정리해 보면,
- VM은 강력한 격리와 안정성
- 컨테이너는 가볍고 빠른 확장성
이라는 특징을 가지고 있습니다.
그리고 Kubernetes는
이 컨테이너의 장점을 극대화하기 위한 오케스트레이션 도구입니다.
궁금한 점이나 추가로 다뤄줬으면 하는 내용이 있다면
언제든지 편하게 말씀해 주세요! 🙌😊
위 포스팅 글은 일프로님의 대세는 쿠버네티스(초급~중급편) 강의를 참고했습니다.
'[ Infra ] > Kubernetes' 카테고리의 다른 글
| [Kubernetes] Why Kubernetes? (1) | 2026.02.03 |
|---|