Operating System/Docker

[Docker] Docker이해하기2. 도커 컨테이너 (Docker container) vs VM

MLra 2021. 1. 6. 14:13

 

Docker container vs VM

가상머신(VM)과의 차별점에 집중해서 알아보자. 

사실상 Docker container와 Virtual machine의 비교가 아니라, 엄밀히 말하면 Container와 VM을 비교해야 맞는 개념

가상머신은 운영체제 위에 하드웨어를 에뮬레이션하고 그 위에 운영체제를 올려 프로세스를 실행하는 방식으로 가상화 환경을 제공한다. 훨씬 강력하게 격리되기 때문에 host와는 분리된다고 봐도 될 정도이다.

이에 반해, Docker container는 하드웨어 에뮬레이션이 없고, 리눅스 커널을 공유해서 프로세스를 실행한다고 생각하면 된다.

 더 자세히 말하면, 앞의 Docker 이해하기1에 나왔던 서버 관리방법 중에 VM은 전가상화방법에 해당하고, container는 반가상화방법에 해당한다고 생각하면 된다. VM은 Hypervisor가 hardware를 가상화해서 그 위에 사용하고 싶은 Guest OS들이 올라간다. 반면 container는 Docker-engine 위에 application에 실행에 필요한 바이너리만 올라간다.

container의 장점은 위의 그림에서 명확하게 알 수 있다. "작다" 작다라는 공간 상 차지하는 용량이 작아 그 자체로도 장점이 있지만 네트워크 관점에서 패키징하고 배포할 때 "빠르다"라는 장점을 동시에 가지고 온다. 그렇지만 VM도 VM 만의 뚜렷한 장점이 있다. "보안" container는 Host kernel을 공유하기 때문에 container하나가 뚫리면 위에 Host kernel자체도 위험하다. 이에 반해 VM은 조금 더 강력하게 격리되어있는 환경이기 때문에 보안에는 더 안전성을 가지는 아키텍처이다.