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

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

 

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은 조금 더 강력하게 격리되어있는 환경이기 때문에 보안에는 더 안전성을 가지는 아키텍처이다.