VM과 Docker container 기술은 모두 소프트웨어를 별도의 환경에서 실행시키기 위한 것.
VM은 물리적인 컴퓨터에 대한 가상화. 즉 하드웨어 가상화. 실제(physical) 머신- Host OS에서 여러개의 Guest OS 를 돌릴 수 있다. 그리고 각 VM 간 독립됨. Host OS 위에서 Guest OS를 완전히 (모든것) 설치.
Docker Container들은 Host OS의 커널을 공유한다. Container에서 명령어 실행 시 실제로는 Host OS에서 실행. Guest OS는 Host OS와 비교해서 다른 부분만 Packing한다. 이러한 구조 때문에 VM보다 가벼운 것이 장점이다.
docker engine는 기본적으로 linux 위에서만 돌아간다.
Windows에서 Docker Desktop APP 을 실행시키기 위해서는 WSL 환경이 필요하다.
이 WSL 이 뭐냐 하면 Windows Subsystem for Linux, hyper-v virtual machine으로 결국 가상머신이다.
그러므로 리눅스 가상머신 위에서 Docker Container를 구동하는 것이다.
VM에 비교하여 단점이 존재한다. 보안 측면에서 Host OS를 공유하기 때문에, Host OS를 공격한다면 그 위에서 구동되는 컨테이너들 역시 문제가 생긴다.