Docker vs Virtual Machine

이미 Ubuntu ServerServer PC에 로컬로 설치하고 사용 중이라서 어떤 부분을 공부할까 고민하던 중에, SlackDocker 관련 질문이 있었어서 이를 보고 정리해보기로 한다.

스크린샷 2024-07-16 12.57.39.png

기존의 VMDocker의 차이를 간단하게 나타내는 그림을 그려봤다. VMHypervisor라는 것 위에 Guest OS를 실행하는 반면에, DockerDocker Engine위에 바로 Bins/Libs가 있다.

이게 무슨 차이일까?

Hypervisor

하이퍼바이저(Hypervisor)는 물리적 하드웨어 자원을 가상 머신에 할당하고 관리한다. 이게 무슨 의미일까?

일반적으로 VMware과 같은 가상머신을 사용하면, 설치 할 때 CPU의 개수, 램의 크기, 저장 장치의 크기 등을 설정하라고 한다. 이게 Hypervisor가 가상 머신에 물리적인 자원을 제공하는 것이다.

Docker

그에 비해 Docker는 컨테이너 기반의 가상화 기술을 사용한다고 한다. OS를 직접 올리는 게 아니라, 컨테이너라는 단위 위에 설치된다. 이 컨테이너들은 호스트 OS의 커널을 공유한다고 한다.

그러니까, 하드웨어 자원을 공유하는 Hypervisor의 방식과 다르게, 현재 OS의 커널을 공유하기 때문에 가상화 수준은 낮지만, 가볍고 빠르게 사용할 수 있다는 차이점이 있다.