서버가상화를 공부하다보면 자연스럽게 컨테이너 기술에대해 고민하게 된다. 컨테이너도 가상화 기술이다. 그럼 하이퍼바이저와 무슨 차이가 있는걸까? 그럼 가상 대중적인 기술인 도커(Docker)를 기준으로 하이퍼바아저랑 비교해보자
(서버가상화는 직전 포스트를 참고!!) https://velog.io/@wearetheone/%EC%84%9C%EB%B2%84%EA%B0%80%EC%83%81%ED%99%94-ESXi-vCenter-vSphere-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
회사, 조직은 컴퓨터 자원을 효율적으로 사용하려고 지속적으로 노력해 왔고 그 결과 지금 VM과 컨테이너 기술로 발전해 왔다.
물리적 하드웨어를 논리적으로 구분하는 것이다
가상화는 크게 2가지로 구분 된다.
그럼 하이퍼바이저는 무슨일을 하는것일까?
하이퍼바이저 위에는 각기 다른 OS들이 올라가 있다. 그리고 다른 OS들은 다른 Kernel을 가지고 있고 다른 방식으로 동작한다
각 Kernel들은 같은 동작을 시켜도 하드웨어 수준에서 연산방식이 다를수 있다. 예를 들어, 인텔기반 PC에서 윈도우로 내리는 1+1 연산과 Apple Silicon 기반인 MacOS에서 명령하는 1+1은 하드웨어가 다르게 동작할 수도 있는 거다. 이런 다른 Guest OS들의 명령어들을 동일한 하드웨어가 알 수 있도록 번역 하는것이 하이퍼바이저가 하는 일이다.
알다시피 컨테이너는 원래 해운업계에서 쓰는 용어이다.
화물을 어떻게 하면 효율적으로 옮길까 생각하다 표준화된 컨테이너 박스를 만들고 무엇이든 똑같이 그 표준대로 만들자고 한것이 컨테이너 기술의 시작이다.
애플리케이션과 그 실행에 필요한 모든 파일(라이브러리, 설정 파일 등)을 패키징해서 컨테이너 엔진만 있으면 돌아갈 수 있도록 하는 구조를 컨테이너라 한다.
특징으로서 컨테이너는 동일한 호스트 운영 체제의 커널을 공유하지만, 독립된 파일 시스템, 프로세스 공간, 네트워크 인터페이스 등을 가진다.
그럼 위에 사항을 표로 만들어서 보도록 하자
특징 | 하이퍼바이저 | 도커 |
---|---|---|
가상화 방식 | 하드웨어 가상화 | 운영 체제 수준의 가상화 |
구성 요소 | 하이퍼바이저(타입 1/타입 2), 가상 머신(VM), 게스트 OS | 도커 엔진, 컨테이너, 이미지 |
운영 체제 격리 | 각 VM이 독립된 OS를 실행 | 컨테이너가 호스트 OS의 커널을 공유 |
자원 할당 | VM 단위로 CPU, 메모리, 디스크 할당 | 컨테이너 단위로 리소스 할당 |
오버헤드 | VM당 추가 OS 실행으로 인한 오버헤드 | 도커 엔진, 컨테이너, 이미지 |
부팅 시간 | 비교적 길다 | 매우 빠르다 |
격리성 | 강력한 격리성 | OS 수준에서의 격리, 보안 격리는 하이퍼바이저보다 약할 수 있음 |
이식성 | VM 이미지의 이식성 | 컨테이너 이미지의 높은 이식성 |
관리 도구 | vSphere, Hyper-V Manager, XenCenter 등 | 도커 CLI, Docker Compose, Kubernetes |
기술의 예 | VMware ESXi, Microsoft Hyper-V, Oracle VirtualBox | Docker, Podman |
운영 체제 지원 | 다양한 운영 체제 지원 | 주로 리눅스 기반, 윈도우 및 macOS에서도 실행 가능 |
보안 | 각 VM이 독립된 커널과 OS를 실행하여 높은 보안 | 컨테이너는 커널을 공유하므로 보안 격리가 상대적으로 약할 수 있음 |
리소스 효율성 | 상대적으로 낮음 | 매우 높음 |