본문 바로가기
소프트웨어 & 클라우드

[Cloud/Virtualization] HyperVisor vs Container 차이 이해하기

by TaeGyeong Lee 2024. 10. 27.

개요 

가상화 기술은 크게 하이퍼바이저(HyperVisor) 와 컨테이너(Container) 로 나뉩니다. 두 차이 및 특징을 이 글을 통해 서술합니다.

 

HyperVisor 

하이퍼바이저는 메모리 등의 컴퓨터의 물리적 자원을 가상 머신에 재할당하는 소프트웨어 입니다. 호스트 OS가 사용하는 하드웨어 자원에 직접 접근하므로 I/O 및 프로세스 스케쥴러 등의 기능을 가진 운영체제 수준의 소프트웨어 입니다. 

하이퍼바이저는 Type 1 과 Type 2 으로 구분될 수 있습니다. 

Type 1 (1형, Bare-Metal)

하드웨어 자원을 직접 사용합니다. 하드웨어 자원을 직접 컨트롤하고 이를 상위 VM에 할당합니다. 호스트 OS가 필요없습니다. 하이퍼바이저 그 자체가 운영체제 역할을 대신합니다. 

  • Type 1 하이퍼바이저 : VMware ESXi, Microsoft Hyper-V 

 

Type 2 (2형, Hosted)

호스트 OS 위에서 동작합니다. 하나의 소프트웨어 형태로 Host OS으로부터 하드웨어 자원 할당 등을 요청합니다. 직접적으로 하드웨어 자원에 접근하지 않습니다. 간접적으로 하드웨어 자원을 접근, 활용하기 때문에 성능이 낮습니다. 

  • Type 2 하이퍼바이저 : VMware WorkStation Pro 

 

Container 

컨테이너는 호스트 OS 위에서 동작하는 가상화, 격리 소프트웨어입니다. 하드웨어 물리적 자원을 호스트 OS를 통해 사용합니다. 컨테이너 위에 올리는 것은 자체적인 운영체제를 가진 가상머신(VM)이 아닌 어플리케이션을 실행하기 위한 런타임과 최소한의 라이브러리만을 담고 있습니다. 하이퍼바이저에 비해 매우 가볍습니다. 

운영체제 또한 컨테이너 위에 올라갈 수 있습니다. 하이퍼바이저와 무슨 차이일까요? 컨테이너 이미지로 사용되는 운영체제는 커널과 드라이버 등을 제외한 경량화한 이미지입니다. Ubuntu 22.04의 공식 ISO 이미지 크기는 약 3.6 GB이고 Ubuntu 22.04의 Docker 이미지 크기는 약 77 MB입니다. 

  • 컨테이너 : Docker 

 

HyperVisor vs Container 

하이퍼바이저 1형, 2형, 컨테이너 비교입니다. 하이퍼바이저는 GuestOS 를 가진 가상머신이 위에 존재하고 컨테이너는 어플리케이션이 실행되기 위한 최소한의 런타임, 라이브러리가 격리되어 위에 존재합니다. 

 

그럼 컨테이너가 항상 좋은 걸까요?

아니요. 경우에 따라 다릅니다. 물리적 컴퓨터가 한 대일때는 컨테이너의 성능이 압도적으로 보입니다. 물리적 컴퓨터가 여러 대일 경우 또한 컨테이너가 좋을까요? 

데이터센터 내 수백 대의 독립적인 물리적 컴퓨팅 자원을 하이퍼바이저를 통해 하나로 묶어 관리할 수 있습니다. 이러한 기술을 Datacenter Virtualization, Software Defined Datacenter (SDDC)라고 부릅니다. 

AWS EC2 서비스를 고객이 사용하기 위해서는 위 기술이 필요합니다. 고객이 요청하는 컴퓨팅 자원을 요구 사항에 맞게, AWS의 유휴 자원을 유연하게 할당해야 하니깐요. 

 

HyperVisor Type 2는 산업용이 아닌 개인용으로 적합합니다.

물리적 컴퓨팅 자원이 하나일 경우 하이퍼바이저보다는 컨테이너가 좋은 선택입니다. 그러나 맥북을 쓰고 있지만 프로그램 호환성 문제로 잠시 윈도우를 사용하고 싶으면 어떻게 해야 할까요? 컨테이너를 만들어서 사용할 수 있을까요? 가능합니다. GUI를 지원하는 이미지를 사용하면 됩니다. 

 

그러나, HyperVisor Type 2인 WorkStation, Parallels를 이용하면 성능은 별로일 수 있지만 맥에서 윈도우를 가장 쉽게 쓸 수 있다는 것을 우리는 알고 있습니다. 하이퍼바이저 2형 소프트웨어는 개인용으로 사용하기에 적합합니다. 저 또한 공부를 위해 WorkStation에 ESXi 를 깔아서 실습을 공부하고 있습니다. 

 

참고 자료 

 

What is a hypervisor?

A hypervisor is software that creates and runs virtual machines by separating a system’s operating system and resources from the hardware to allocate to VMs.

www.redhat.com

 

컨테이너 설명: 컨테이너의 개념과 역할

컨테이너는 응용 프로그램, 서비스 및 모든 관련 라이브러리와 종속성을 포함한 하나의 패키지로 감싸고, 이를 다양한 환경에서 실행할 수 있도록 합니다.

www.redhat.com

 

하이퍼바이저란 무엇인가요?- 하이퍼바이저 설명 - AWS

하이퍼바이저는 가상화 또는 하드웨어와 소프트웨어의 분리를 지원하는 기반 기술입니다. IT 관리자는 단일 호스트 시스템에 여러 가상 머신을 생성할 수 있습니다. 가상 머신마다 자체 운영 체

aws.amazon.com

 

하이퍼바이저란 무엇인가요? | IBM

하이퍼바이저는 운영 체제의 여러 인스턴스를 동일한 물리적 컴퓨팅 리소스에서 실행할 수 있게 해주는 소프트웨어입니다.

www.ibm.com

 

Package difference in Ubuntu 20.04 between regular and Minimal cloud images and Docker image

In 2018, Canonical introduced a smaller Minimal Ubuntu cloud image, available on the public clouds. Canonical says in the introductory blog article that Minimal Ubuntu is less than 50% the size of the standard Ubuntu server image and boots up to 40% faster

davecore82.github.io