컨테이너와 가상머신 비교
요약
가상 머신(VM)은 서버 하드웨어를 가상화(또는 직접 관리할 필요성을 제거)하는 반면, 컨테이너는 서버의 운영 체제를 가상화한다. Docker는 컨테이너를 위한 운영 체제(또는 런타임)이다. 컨테이너를 실행하려는 각 서버에 Docker Engine이 설치되어 컨테이너를 구축, 시작 또는 중단하는 데 사용할 수 있는 간단한 명령 세트를 제공한다.
가상머신
Host: 가상 시스템 호스트 서버이며 처리 능력, 메모리, 디스크 및 네트워크 I/O 등과 같은 컴퓨팅 리소스를 제공하는 기본 하드웨어.
GuestOS: 운영 체제 및 애플리케이션 소프트웨어의 완전히 별개의 독립적 인스턴스. 호스트 VM에 상주하고 해당 서버의 컴퓨팅 리소스에서 공유하는 가상 워크로드.
Hypervisor: 가상화 플랫폼은 호스트와 게스트 사이에 추상 레이어를 설치하는데 이것이 VMM, 하이퍼바이저이다. 이것은 가상 머신을 생성하고 구동하는 소프트웨어로, 각 게스트를 다른 게스트로부터 격리하여 여러 게스트가 동시에 호스트에 상주하고 작동할 수 있도록 지원한다. 하이퍼바이저는 운영체제와 가상 머신의 리소스를 분리해 할당되었던 리소스를 각 VM에 제공하고 물리 리소스에 대해 VM 리소스의 일정을 관리한다. 물리적 하드웨어는 계속해서 실행 작업을 수행하므로 하이퍼바이저가 일정을 관리하는 동안 CPU가 VM에서 요청한대로 CPU 명령을 계속 실행한다.
하이퍼바이저는 Type1, Type2로 나뉜다.
추상화는 소프트웨어와 하드웨어 사이의 직접적인 연관을 제거하는데, 이 때문에 서버가 각각의 게스트를 서로 다른 운영체제와 서비스 요구사항으로 호스팅하는 것이 가능해진다. 하나의 물리적으로 동일한 호스트 서버위에 윈도우 게스트 운영 체제를 사용하는 VM과 Linux 게스트 운영 체제를 실행하는 VM이 동시에 공존할 수 있다는 것이다.
컨테이너
컨테이너는 보다 가볍고 민첩한 가상화 처리 방법이다. 하이퍼바이저를 사용하지 않기 때문에 더 빠른 리소스 프로비저닝과 새로운 애플리케이션의 더 빠른 가용성을 누릴 수 있다.
컨테이너화는 전체 가상 머신을 회전시키는 대신 단일 애플리케이션 또는 마이크로 서비스를 실행하는 데 필요한 모든 것을 함께 패키지화한다(실행하는 데 필요한 런타임 라이브러리). 컨테이너에는 모든 코드, 종속성 및 운영 체제 자체까지 포함된다. 이를 통해 데스크톱 컴퓨터, 기존 IT 인프라 또는 클라우드 등 거의 모든 곳에서 애플리케이션을 실행할 수 있게 된다.
컨테이너는 운영 체제(OS)를 가상화한다. 간단히 말해, 호스트 운영 체제의 기능을 활용하여 프로세스를 격리하고 CPU, 메모리 및 데스크 공간에 대한 프로세스의 액세스를 제어한다.
차이점
기존 가상화에서는 하이퍼바이저가 물리적 하드웨어를 가상화하였다. 따라서 각 가상 시스템에는 guest OS, OS를 실행하는 데 필요한 하드웨어의 가상 복사본, 애플리케이션 및 관련 라이브러리 및 종속성이 포함된다. 운영 체제가 서로 다른 VM을 동일한 물리적 서버에서 실행할 수 있다. 예를 들어 VMware VM을 Linux VM 옆에서 실행할 수 있으며, Microsoft VM 옆에서 실행할 수 있다.
컨테이너는 기본 하드웨어를 가상화하지 않고 운영 체제(일반적으로 리눅스 또는 윈도우즈)를 가상화하여 각 개별 컨테이너에는 애플리케이션과 해당 라이브러리와 종속성만 포함된다. 컨테이너는 가상 머신과 달리 모든 인스턴스에 게스트 OS를 포함할 필요가 없으며 대신 호스트 OS의 기능과 리소스를 활용할 수 있기 때문에 크기가 작고 빠르며 이식할 수 있습니다.
가상 시스템과 마찬가지로 컨테이너를 사용하면 개발자가 물리적 시스템의 CPU 및 메모리 활용률을 향상시킬 수 있다. 그러나, 컨테이너는 애플리케이션 구성 요소를 보다 세밀하게 배치하고 확장할 수 있는 마이크로 서비스 아키텍처도 가능하기 때문에 훨씬 더 나은 방법일 수 있다.
참고
https://www.techtarget.com/searchitoperations/tip/Host-and-guest-virtual-machine-Definitions
https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor