컨테이너 vs 하이퍼바이저 (가상화)

Sungwuk·2024년 6월 15일
0

서버가상화를 공부하다보면 자연스럽게 컨테이너 기술에대해 고민하게 된다. 컨테이너도 가상화 기술이다. 그럼 하이퍼바이저와 무슨 차이가 있는걸까? 그럼 가상 대중적인 기술인 도커(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가지로 구분 된다.

  • 가상머신(vm) : 하이퍼바이저를 이용하여 리소스 전체를 가상화
  • 컨테이너 (container) : OS수준에서 프로세스(app)을 컨테이너 형태로 격리

하이퍼바이저

그럼 하이퍼바이저는 무슨일을 하는것일까?

하이퍼바이저 위에는 각기 다른 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 VirtualBoxDocker, Podman
운영 체제 지원다양한 운영 체제 지원주로 리눅스 기반, 윈도우 및 macOS에서도 실행 가능
보안각 VM이 독립된 커널과 OS를 실행하여 높은 보안컨테이너는 커널을 공유하므로 보안 격리가 상대적으로 약할 수 있음
리소스 효율성상대적으로 낮음매우 높음
profile
https://github.com/John-Jung

0개의 댓글

관련 채용 정보