suyeonme

[운영체제] VM(Virtual Machine) vs Container 본문

프로그래밍👩🏻‍💻/운영체제

[운영체제] VM(Virtual Machine) vs Container

suyeonme 2022. 12. 4. 13:32

이미지 출처: https://images.contentstack.io/v3/assets/blt300387d93dabf50e/bltb6200bc085503718/5e1f209a63d1b6503160c6d5/containers-vs-virtual-machines.jpg

 

VM(Virtual Machine)


VM은 하이퍼바이저(hypervisor)로 컴퓨터 환경을 가상화(emulation)하는 방법이다. 하이퍼바이저를 이용하여 HostOS위에 특정 운영체제(가상 이미지)로 GuestOS를 올려 여러개의 VM을 생성할 수 있다. 하드웨어 스택을 가상화한다.

 

예를 들면, HostOS가 window이고 그 위에 GuestOS로 Linux를 설치할 수 있다.  GuestOS 입장에서는 물리 서버와 동일하게 사용이 가능하다.

 

하이퍼바이저의 종류로 virtual box, Xen, KVM, VMware등이 있다.

장점

  • 각각의 VM간 완전한 격리로 보안성이 높다.
  • GuestOS로 다양한 OS를 사용할 수 있다.

단점

  • 크기가 GB단위로 사이즈가 크다.
  • 각각의 OS를 띄워야하므로 시작 및 종료 시간이 느리다. (분 단위)
  • 운영 및 마이그레이션이 어렵다.

Container


HostOS위에 컨테이너(논리적 분류)를 생성하고 어플리케이션 작동을 위해 필요한 라이브러리 및 어플리케이션을 모아서 별도의 서버인 것 처럼 사용할 수 있는 방법이다. 이 때 여러개의 컨테이너가 커널을 공유(HostOS의 리소스)한다. OS 수준에서 가상화를 실시하여 OS 커널에서 컨테이너를 구동한다.

 

여러개의 컨테이너를 조합하여 하나의 어플리케이션을 구축하는 MSA(Micro Service Architecture)에 쿠버네티스와 함께 많이 사용된다.

장점

  • 크기가 MB단위로 사이즈가 작다.
  • 운영체제 커널을 공유하기 때문에 시작 시간 및 종료 시간이 빠르며(초 단위) 전체 부팅보다 메모리를 적게 사용한다.
  • 커널을 공유하기때문에 여러 환경간에 이동이 쉽다.

단점

  • HostOS와 동일한 OS만 사용할 수 있다.
  • 커널을 공유하기 때문에, 특정 컨테이너에서 문제가 발생할 경우 다른 컨테이너도 영향을 받을 수 있다. (보안성이 낮다)
Comments