도커 머신 vs 도커 데스크탑
도커 머신 (Docker Machine)
Docker Machine은 Mac 또는 Windows에서 Docker를 실행하는 최초의 접근 방식으로 기본적으로 제공된 하이퍼바이저(virtualbox, parallels 및 vmware) 내에서 boot2docker 가상 머신을 시작하는 CLI 도구 세트입니다. 파일 시스템 마운트는 하이퍼바이저 자체 또는 NFS (하이퍼바이저는 일반적으로 다소 느리기 때문)와 같은 추가 도구를 통해 제공됩니다. 여기서 VM 이미지는 Docker 호스트 역할을 합니다.
- macOS와 Windows용으로 docker를 만든 것
- VirtualBox나 Parallels와 같은 솔루션으로 가상머신을 만들고 docker용 OS이미지를 이용
- 해당 이미지는 최소한으로 공간을 사용하고 최고의 성능을 내기 위해 만들어진 미니멀 Linux 배포판
- 해당 가상머신이 docker host의 역할을 함
- 도커에서는 이렇게 만들어진 docker machine을 관리하기 위한 cli도 제공
- 도커를 위한 리소스(가상머신의 리소스 - RAM, CPU) 확장을 위해서는 가상머신 솔루션에서 설정
도커 데스크탑 (Docker Desktop)
Docker의 심장이라고 할 수 있는 Docker Engine은 리눅스에서만 구동되기 때문에 윈도우/맥에서 사용하기 위해서는 리눅스 VM을 생성하고 Docker를 설치하고 세팅하는 복잡한 과정이 필요합니다. 이런 과정을 한 번에 해주는 제품이 바로 Docker Desktop입니다.
Docker Desktop은 다른 종류의 솔루션이며 기본 OS 가상화 방법에 의존하기 때문에 타사 가상화가 필요하지 않습니다. macOS의 경우 이러한 기술을 하이퍼바이저 프레임워크라고 합니다. Docker Desktop은 Hypervisor 가상화를 앱에 내장하기 위한 오픈소스 솔루션인 HyperKit을 사용하여 일종의 VM을 가동합니다. 이 VM을 관리할 필요가 없으며 해당 Docker 인스턴스에 할당되는 가상 CPU와 RAM의 수를 제어하기 위한 인터페이스가 존재합니다. Docker VM을 관리할 때 오버헤드가 적지만 일부 기능은 OS 구현에 의해 제한됩니다.
- Native Application이기 때문에 Docker machine처럼 가상머신이 필요하지 않음
- docker는 PC의 가상화 기술(hypervisor)를 이용하기 때문에 CPU가 해당 기능을 제공하지 않으면 사용 불가
- 가상 머신을 관리할 필요가 없어 오버헤드가 적음
- windows와 mac 모두 GUI 환경 제공
- OS에서 제한한다면 기능제한 발생 가능성
- windows에서 다른 가상화 솔루션(하이퍼바이저, vmware, virtualbox)와 동시 사용 불가