DevOps & SRE/Docker & kubernetes

[Docker] VM vs Container

반응형

공통점

VM, Container 모두 가상화 기술.

가상화란 컴퓨팅 리소스의 추상화이며, 한정된 컴퓨팅 리소스를 좀 더 효율적으로 사용하기 위해서 사용.

또한, 둘다 이미지화하여 일관된 환경을 제공할 수 있다는 점과 버전 관리를 통해 변경 추적 가능하다 등의 공통점이 존재.


차이점

다만 VM (가상 머신)과 Container는 각각 가상화하는 대상과 목적에 차이가 있음. 이러한 특징으로 인해서 사용되는 목적에 차이가 있다.

VM vs Container

VM

VM은 물리적인 서버에 하이퍼바이저를 사용해서, 여러 개의 독립된 가상 머신을 실행시키는 형태.

  • 하이퍼바이저는 인스턴스화 중에 물리적 하드웨어 리소스를 독점적으로 사용할 수 있도록 가상 머신에 할당하는 역할을 수행.
  • 각각의 가상 머신은 자체의 운영체제와 커널을 가지며, 각각은 독립된 환경을 제공한다.
  • 가상 머신은 클라우드 컴퓨팅의 핵심 기술로 사용되며, 다양한 운영체제 및 애플리케이션을 호스팅할 수 있음.


Container

  • Container는 동일한 Host 운영체제를 공유하면서, Linux 커널 기능인 chroot, namespace, cgroup을 이용해서 프로세스 단위의 격리된 환경을 생성한다.
    • 각각의 컨테이너는 동일한 호스트 운영체제 커널 리소스를 공유한다.
  • 이를 통해서 애플리케이션과 그 종속성을 패키징하는 형태.
  • 이러한 특징이 있어, VM 대비 컨테이너는 가볍고 빠르게 실행될 수 있어, 다양한 환경에 일관된 애플리케이션 배포 등에 효과적. (가상 머신은 OS 커널 등을 모두 포함하기 때문에, 이미지의 크기가 Container에 비교했을때 크다

참고

  • VM, Container 하나의 가상화 기술만을 사용해야하는 것은 아니고, 둘 다 사용할 수 있음 (단순히 가상화하는 대상이 다름)
  • 예를 들어서 AWS EC2에 도커 컨테이너를 띄우면, 하드웨어를 가상화한 가상 머신의 Host OS 위에서 한번더 추상화 한 개념
반응형