요즘에는 가상머신(Virtual Machine, VM)보다 도커가 훨씬 더 많이 쓰이는데 그 이유가 뭐라고 생각하시나요?
크게 세 가지 이유

호스트 가상화 vs 하이퍼바이저 가상화 vs 컨테이너 - 출처
Virtual Machine의 경우 호스트의 자원을 게스트 운영체제와 공유하기 위해 Hypervisor 를 사용하는데, Hypervisor가 하드웨어(CPU, Network 등)를 가상화하면서 발생한 오버헤드 때문에 호스트의 자원을 100% 활용하지 못함.Docker는 리눅스 컨테이너 가상화 기술을 사용하여 게스트 운영체제 없이 호스트 운영체제(커널) 위에 격리된 컴퓨팅 환경을 운영하기 때문에 호스트의 자원을 거의 100% 사용할 수 있음.

Guest OS 용량 : 5GB ~ 20GB 정도

Minimal Guest OS (Base Image) : 50MB ~ 300MB정도
Docker는 게스트 운영체제 전체를 따로 설치하지 않고, 운영체제 가상화에 필요한 최소한의 바이너리 파일과 서버 운영에 필요한 환경(프로그램 및 소스 코드)를 이미지로 만들어 사용하기 때문에 VM에 비해 용량이 현격히 작고 가벼움.도커 이미지는 베이스 이미지 위에 새로운 이미지를 계속해서 쌓아 올리는 레이어 구조를 갖기 때문에 이미지의 중복을 최소화하여 Storage에서 이미지가 차지하는 용량을 줄임.
Dockerfile로 작성하여 손쉽게 공유 할 수 있음.도커 이미지는 비교적 저용량의 파일로 되어있기 때문에 VM에 비해 버전 관리가 훨씬 쉽고, 도커 레지스트리(Docker Hub)를 이용한 이미지 중앙 관리 및 체계적인 배포도 가능.도커 이미지 하나만 가지고 있으면 오토스케일링 기능과 연동해서 손쉽게 서버를 확장할 수 있음.도커 이미지만 지우면 설치된 다양한 라이브러리와 패키지를 한 번에 지울 수 있어 테스트 환경으로 사용하기 좋음.