Docker Desktop의 가상 머신 관리자
Docker Desktop의 가상 머신 관리자 (VMM)
Docker Desktop은 컨테이너를 실행하는 Linux VM을 구동하기 위해 여러 VM 매니저(Virtual Machine Manager, VMM)를 지원해요. 사용 가능한 옵션은 플랫폼에 따라 달라져요.
출처: Docker VMM
본문
Docker VMM
- 가용성: Beta
- 요구 사항: Docker Desktop 4.86 이상
Docker VMM은 컨테이너에 최적화된 가상 머신 관리자예요. Docker Desktop 4.86부터 Mac에서 4.35~4.85 버전에 쓰이던 libkrun 대신 Docker 자체 VMM 구현을 사용해요. 컨테이너 워크로드에 맞게 만들어진 Docker VMM은:
- 컨테이너가 활성화되지 않으면 유휴 메모리를 호스트에 반환해서, Docker Desktop이 사용하지 않는 RAM을 붙잡지 않아요.
- 컨테이너와 호스트 사이의 파일 I/O를 개선해서 편집-컴파일-테스트 루프의 지연을 줄여요.
- 엔진과 컨테이너 시작 시간을 줄여요.
Docker가 가상화 레이어를 제어하기 때문에, 서드파티 백엔드로는 불가능한 방식으로 모니터링하고 관리할 수 있어요. Windows에서 Docker VMM은 컨테이너 환경과 호스트 사이에 실제 VM 경계를 두는 WSL 2의 안정적인 대안을 제공해요.
Docker VMM으로 전환하기
Docker VMM은 Docker Linux VM에 최소 4GB의 메모리가 할당되어 있어야 해요. 전환 전에 Settings > Resources 에서 메모리를 늘려요.
Mac (Apple Silicon):
- Settings > General > Virtual Machine Manager로 이동해요.
- Docker VMM 을 선택해요.
- Apply & restart 를 선택해요.
이전에 Docker VMM을 선택했었다면, 어떤 엔진이 실행되는지는 버전에 따라 달라요.
- Docker Desktop 4.35 이하는
libkrun이 뒷받침해요. - Docker Desktop 4.86 이상은 Docker 자체 VMM 구현을 사용해요.
4.35 이상 버전에서 업그레이드한다면 설정이 유지되고, Docker Desktop은 재시작 시 새 Docker VMM으로 자동 전환돼요.
Windows:
- Settings > General > Virtual Machine Manager로 이동해요.
- Docker VMM 을 선택해요.
- Apply & restart 를 선택해요.
알려진 문제
- Docker VMM으로 전환한 후 Docker Desktop 재시작이 필요할 수 있어요.
- Docker VMM은 바인드 마운트 자동 공유를 지원하지 않아요.
file is not shared from the host오류가 보이면 Settings > Resources > File sharing으로 가서 공유하려는 디렉터리를 추가해요.
Mac 전용:
- Docker VMM은 현재 Rosetta를 지원하지 않아서 amd64 아키텍처 에뮬레이션이 느려요. Docker가 해결책을 모색 중이에요.
- MongoDB, Cassandra 같은 일부 데이터베이스는 Docker VMM과 함께 virtiofs를 쓸 때 실패할 수 있어요. 이 문제는 향후 릴리스에서 해결될 예정이에요.
Mac을 위한 대체 VMM
Apple Virtualization framework: Mac에서 가상 머신을 관리하기 위한 안정적이고 확립된 옵션이에요. 여러 해 동안 많은 Mac 사용자에게 신뢰받아 왔어요.
Intel 기반 Mac용 HyperKit (레거시): HyperKit은 deprecated예요. Apple Virtualization framework로 전환하는 걸 권장해요. HyperKit은 Intel 기반 Mac을 위한 레거시 가상화 옵션이고, 더 나은 성능과 미래 대비를 위해 현대적인 대안으로 전환하는 걸 권장해요.
Windows를 위한 대체 VMM
WSL 2: Docker Desktop의 기본 Windows 백엔드예요. Windows 호스트 파일시스템과 네트워킹에 밀접하게 통합된 가벼운 VM 안에서 완전한 Linux 커널을 실행해요. WSL 2는 per-user와 all-users 설치 모드 모두에서 사용할 수 있고 관리자 권한이 필요 없어요.
Hyper-V: Windows의 네이티브 하이퍼바이저예요. 완전히 격리된 가상 머신에서 Docker Linux VM을 실행해 컨테이너 환경과 Windows 호스트 사이에 강력한 경계를 제공해요. Hyper-V는 all-users 설치 모드에서만 사용할 수 있고 관리자 권한이 필요해요.