오늘도 기록하는 중 GitHub

Insight

컨테이너와 가상 머신(VM)

YongE 2025. 4. 14. 10:58

개요


쿠버네티스에 대한 정보를 찾아보다가 문득 다음 글을 눈에 띄었다.

컨테이너와 VM의 차이는 무엇일까?

도커를 자주 사용해왔고 최근에는 vm도 다루기 시작했지만 이 차이를 설명할 정도로 이에 대해 이해하지 못하고 있었다. 그래서 이번에는 이들에 대해 알아보고자 한다!

출처 : 현대자동차그룹 개발자

가상 머신(Virtual Machine)의 구조와 작동 방식


가상 머신의 정의

가상 머신은 물리적인 하드웨어 위에 하이퍼바이저(Hypervisor)를 설치하고, 그 위에 각기 다른 운영 체제(Guest OS)를 설치하여 독립적인 실행 환경을 제공한다. 각 VM은 자체적인 커널과 사용자 공간을 가지며, 물리적 하드웨어를 가상화하여 사용한다.

사용자 공간과 커널 공간의 활용

  • 커널 공간: 각 VM은 자체 운영 체제를 포함하므로, 고유의 커널 공간을 가진다. 이는 하드웨어 자원을 직접 관리하고, 시스템 호출을 처리한다.
  • 사용자 공간: 애플리케이션과 사용자 프로세스가 실행되는 영역으로, VM 내에서 독립적으로 운영된다.

장점과 단점

  • 장점:
    • 높은 보안성과 격리성
    • 다양한 운영 체제 실행 가능
  • 단점:
    • 높은 자원 소모
    • 느린 부팅 시간

컨테이너(Container)의 구조와 작동 방식


컨테이너의 정의

컨테이너는 호스트 운영 체제의 커널을 공유하면서, 애플리케이션과 그 종속성을 패키징하여 격리된 환경에서 실행하는 기술이다. 컨테이너는 가상 머신보다 가볍고 빠르게 실행된다.

사용자 공간과 커널 공간의 활용

  • 커널 공간: 컨테이너는 호스트 OS의 커널을 공유하므로, 별도의 커널 공간을 가지지 않는다.
  • 사용자 공간: 각 컨테이너는 독립된 사용자 공간을 가지며, 애플리케이션과 그 종속성이 포함된다.

장점과 단점

  • 장점:
    • 빠른 시작 시간
    • 낮은 자원 소모
    • 높은 이식성
  • 단점:
    • 커널 공유로 인한 보안 이슈
    • 운영 체제 다양성 제한

사용자 공간과 커널 공간의 비교


항목 가상 머신(VM) 컨테이너(Container)
커널 공간 각 VM이 독립적인 커널을 가짐 호스트 OS의 커널을 공유
사용자 공간 각 VM이 독립적인 사용자 공간을 가짐 각 컨테이너가 독립적인 사용자 공간을 가짐
자원 소모 상대적으로 높음 상대적으로 낮음
부팅 시간 느림 빠름
보안성 높음 커널 공유로 인해 상대적으로 낮음
운영 체제 다양성 다양한 운영 체제 실행 가능 호스트 OS와 동일한 커널 필요

생각


이 둘은 따로 사용하기도 하지만 상호보완적으로도 사용된다. 지금껏 각각의 쓰임과 차이를 모호하게 알고 있었지만 이번 기회에 명확하게 알게 됐다.
흥미가 생겼으니 나중에 기회가 있을 때 도커 엔진의 소스코드도 직접 뜯어보고자 한다!

반응형