개요
가상화 기술과 컨테이너 기술은 모두 IT 인프라의 리소스를 효율적으로 사용하기 위한 수단입니다.
가상화 기술과 컨테이너 기술을 사용하면 애플리케이션의 실행 환경의 독립성을 보장할 수 있다는 공통점이 있습니다.
예를 들어 Web Server와 Web Application Server를 독립적으로 운영하기 위해 2대의 컴퓨터를 사용하여 서버를 구축했다고 가정합시다.

그런데 각 컴퓨터에서 리소스의 사용률이 20% 정도라면 굉장히 비효율적인 방식으로 서버를 운영하고 있다는 뜻이 됩니다.
그렇다면 하나의 컴퓨터에서 환경을 분리하여 Web Server와 Web Application Server를 운영하면 어떨까요?

독립적인 컴퓨터 두 대를 운영하는 것 보다는 리소스의 낭비가 줄어들게 됩니다.
이 때 사용하는 기술이 가상화 기술 혹은 컨테이너 기술입니다.
가상화 기술과 컨테이너 기술은 비슷해 보이지만 내부적인 구조를 확인해보면 확실히 다른 기술이라는 것을 이해할 수 있습니다.
가상화 기술 (Virtualization)
가상화 기술은 하나의 물리적인 서버가 여러 대의 독립적인 컴퓨터처럼 작동하게 만드는 기술입니다.
가상화 기술을 이해하기 위해서는 Hypervisor에 대해 알아야 합니다.
Hypervisor는 VM을 생성, 관리하는 애플리케이션으로 물리적인 리소스를 VM에 적절히 할당합니다.
Hypervisor에도 두 가지 유형의 Hypervisor가 존재합니다.
유형 1 Hypervisor
유형 1 Hypervisor는 Bare Metal Hypervisor라고도 합니다.

유형 1 Hypervisor는 위 그림과 같이 물리적인 서버에 직접적으로 설치됩니다.
이 Hypervisor의 유형은 다음과 같습니다.
- VMware ESXi
- 마이크로소프트 하이퍼-V
- KVM
이 Hypervisor는 하드웨어와 직접적으로 상호 작용하기 때문에 상대적으로 성능이 좋고 OS 내부에서 실행되지 않기 때문에 보안적인 측면에서도 좋습니다.
유형 2 Hypervisor
유형 1 Hypervisor는 Hosting Hypervisor라고도 합니다.
이 Hypervisor의 유형은 다음과 같습니다.
- VMware Work Station
- Oracle Virtual Box

유형 2 Hypervisor는 위 그림과 같이 물리적인 서버에 직접적으로 설치되는 것이 아니라 Host OS 내부에서 설치되고 실행됩니다.
VM 요청이 들어올 때 Hypervisor만 거치는 것이 아니라 Host OS도 거치기 때문에 유형 1 Hypervisor에 비해 추가 지연 시간이 존재합니다.
차이점
유형 1 Hypervisor의 경우 보안적인 측면이나 성능적인 측면에서 장점을 가지기 때문에 주로 데이터 센터나 엔터프라이즈급에 사용됩니다.
하지만 VM을 관리하기 까다롭기 때문에 전문가 수준의 지식이 필요합니다.
유형 2 Hypervisor의 경우 유형 1에 비해 보안적인 측면과 성능적인 측면에서는 다소 떨어지지만 Hypervisor를 OS 내 애플리케이션으로 관리할 수 있기 때문에 VM을 관리하기 상대적으로 쉽습니다.
단점
이렇게 가상화 기술을 사용하면 Hypervisor를 통해 여러 대의 VM을 관리할 수 있고 단일 리소스를 좀 더 효율적으로 사용할 수 있게 됩니다.
그리고 VM은 독립적인 Guest OS와 Application을 가지고 있고 하드웨어를 가상화하기 때문에 가상 CPU, 가상 메모리, 가상 디스크, 가상 NIC가 존재하고 Guest OS 입장에서 보면 진짜 물리적인 컴퓨터 하나를 운영하는 것과 동일합니다.
하지만 VM은 운영하기 조금 무겁다는 단점이 있습니다.
기본적으로 Guest OS 자체를 복제하기 때문에 사이즈 자체가 크고 부팅을 할 때도 Hypervisor, Guest OS 그리고 애플리케이션까지 실행해야 하기 때문에 시간이 오래 걸립니다.
이러한 단점을 극복하기 위한 기술이 바로 컨테이너 기술입니다.
정리
가상화 기술의 특징을 정리하면 다음과 같습니다.
- 높은 수준의 격리
- 하드웨어 가상화
- 느린 부팅 속도
- 독립적인 OS 보유
- 무거움
- 높은 리소스 사용량
컨테이너 기술 (Containerization)
VM의 경우 하드웨어를 가상화하기 때문에 Guest OS 입장에서 진짜 독립적인 컴퓨터 한 대를 운영하는 것과 동일합니다.
하지만 컨테이너 기술은 하드웨어를 가상화하지 않고 OS만 가상화를 하기 때문에 Host OS 커널에서 직접 container를 관리합니다.

container 자체는 VM과 달리 전체 OS를 포함하지 않고 바이너리, 라이브러리, 애플리케이션만 포함하기 때문에 VM에 비해 비교적 가볍습니다.
가상화 기술에서 독립적인 환경을 만들기 위해 매번 전체 OS를 복제해야 하지만 container 기술은 바이너리, 라이브러리, 애플리케이션만 복제하기 때문에 전체적으로 리소스를 효율적으로 사용할 수 있습니다.
이 container 기술의 가장 대표적인 기술이 바로 docker입니다.
docker container 기술에는 Guest OS가 존재하는 것 아닌가요?
docker를 사용해보신 분들은 이와 같은 의문점이 들 수 있습니다.
docker에는 다양한 종류의 OS Image가 존재하고 이를 바탕으로 특정 OS 컨테이너를 실행할 수 있습니다.
이러한 점 때문에 Guest OS가 존재한다고 착각할 수 있는데 그렇지 않습니다.
만약 Host OS가 ubuntu이고 docker container OS가 CentOS라고 가정할 때 docker container에는 CentOS 자체가 들어가는 것이 아니라 ubuntu와 CentOS의 차이점만 들어가게 됩니다.
그리고 만약 해당 container에서 명령어를 실행하게 된다면 Host OS의 커널을 사용하여 실행하게 됩니다.
정리
컨테이너 기술의 특징을 정리하면 다음과 같습니다.
- 비교적 낮은 수준의 격리
- OS 가상화
- 빠른 부팅 속도
- Host OS 커널 공유
- 가벼움
- 낮은 리소스 사용량
참고
https://aws.amazon.com/ko/compare/the-difference-between-type-1-and-type-2-hypervisors/
1형 및 2형 하이퍼바이저 비교 - 하이퍼바이저 유형 간의 차이점 - AWS
Amazon Web Services(AWS)는 네트워킹, 컴퓨팅, 스토리지 및 데이터베이스를 비롯한 광범위한 인프라에서 가상화 솔루션을 제공합니다. 클라우드는 가상화를 기반으로 하며 모든 사용자와 조직의 요구
aws.amazon.com
https://www.purestorage.com/kr/knowledge/what-is-a-bare-metal-hypervisor.html
베어메탈 하이퍼바이저란? | 퓨어스토리지
베어메탈 하이퍼바이저는 물리적 머신의 하드웨어에 직접 설치되는 가상 머신 모니터(VMM)입니다.
www.purestorage.com
https://blog.bytebytego.com/p/virtualization-and-containerization?utm_source=publication-search
Virtualization and Containerization: Which one to pick?
Software applications have traditionally been closely tied to the specific servers they run on and the operating systems they use. But as companies look to get more out of their infrastructure while spending less time and effort managing it, vendors are of
blog.bytebytego.com
https://www.youtube.com/watch?v=zh0OMXg2Kog&t=704s
https://www.openmaru.io/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EA%B0%80%EC%83%81%ED%99%94/
컨테이너 기술 vs 가상화 기술 | 비교와 장단점
컨테이너 기술과 가상화 기술의 차이점과 장단점을 표와 그림으로 비교하여 이해하기 쉽게 설명하여 드립니다. 오픈마루 블로그를 통해서 어떤 기술이 귀사의 차세대 시스템 구축에 더 적합한
www.openmaru.io
Docker 소개
Docker란 무엇인가?개념 잡기Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운 형태
bcho.tistory.com