개요
쿠버네티스에 대한 정보를 찾아보다가 문득 다음 글을 눈에 띄었다.
컨테이너와 VM의 차이는 무엇일까?
도커를 자주 사용해왔고 최근에는 vm도 다루기 시작했지만 이 차이를 설명할 정도로 이에 대해 이해하지 못하고 있었다. 그래서 이번에는 이들에 대해 알아보고자 한다!
가상 머신(Virtual Machine)의 구조와 작동 방식
가상 머신의 정의
가상 머신은 물리적인 하드웨어 위에 하이퍼바이저(Hypervisor)를 설치하고, 그 위에 각기 다른 운영 체제(Guest OS)를 설치하여 독립적인 실행 환경을 제공한다. 각 VM은 자체적인 커널과 사용자 공간을 가지며, 물리적 하드웨어를 가상화하여 사용한다.
사용자 공간과 커널 공간의 활용
- 커널 공간: 각 VM은 자체 운영 체제를 포함하므로, 고유의 커널 공간을 가진다. 이는 하드웨어 자원을 직접 관리하고, 시스템 호출을 처리한다.
- 사용자 공간: 애플리케이션과 사용자 프로세스가 실행되는 영역으로, VM 내에서 독립적으로 운영된다.
장점과 단점
- 장점:
- 높은 보안성과 격리성
- 다양한 운영 체제 실행 가능
- 단점:
- 높은 자원 소모
- 느린 부팅 시간
컨테이너(Container)의 구조와 작동 방식
컨테이너의 정의
컨테이너는 호스트 운영 체제의 커널을 공유하면서, 애플리케이션과 그 종속성을 패키징하여 격리된 환경에서 실행하는 기술이다. 컨테이너는 가상 머신보다 가볍고 빠르게 실행된다.
사용자 공간과 커널 공간의 활용
- 커널 공간: 컨테이너는 호스트 OS의 커널을 공유하므로, 별도의 커널 공간을 가지지 않는다.
- 사용자 공간: 각 컨테이너는 독립된 사용자 공간을 가지며, 애플리케이션과 그 종속성이 포함된다.
장점과 단점
- 장점:
- 빠른 시작 시간
- 낮은 자원 소모
- 높은 이식성
- 단점:
- 커널 공유로 인한 보안 이슈
- 운영 체제 다양성 제한
사용자 공간과 커널 공간의 비교
항목 | 가상 머신(VM) | 컨테이너(Container) |
---|---|---|
커널 공간 | 각 VM이 독립적인 커널을 가짐 | 호스트 OS의 커널을 공유 |
사용자 공간 | 각 VM이 독립적인 사용자 공간을 가짐 | 각 컨테이너가 독립적인 사용자 공간을 가짐 |
자원 소모 | 상대적으로 높음 | 상대적으로 낮음 |
부팅 시간 | 느림 | 빠름 |
보안성 | 높음 | 커널 공유로 인해 상대적으로 낮음 |
운영 체제 다양성 | 다양한 운영 체제 실행 가능 | 호스트 OS와 동일한 커널 필요 |
생각
이 둘은 따로 사용하기도 하지만 상호보완적으로도 사용된다. 지금껏 각각의 쓰임과 차이를 모호하게 알고 있었지만 이번 기회에 명확하게 알게 됐다.
흥미가 생겼으니 나중에 기회가 있을 때 도커 엔진의 소스코드도 직접 뜯어보고자 한다!
반응형
'Insight' 카테고리의 다른 글
M4 Pro With 24GB RAM으로 LLM 실행하기 (5) | 2025.03.14 |
---|---|
Cline - AI 에이전트 (2) | 2025.01.23 |
Cloudflare Pages 대역폭 무제한..? (1) | 2025.01.17 |
AI Agent 프레임워크, CrewAI (2) | 2025.01.16 |
글쓰기 머신이 필요하다면? Freewriter, Pomera (1) | 2023.07.02 |