本文介绍一种使得 Windows 下 Docker 与 VMware 软件同时可用的方法.
2020年4月17日更新: VMware现已初步支持Hyper-V,并且WSL2也快正式发布,请考虑使用新的VMware和WSL2.
附: VMware Workstation Tech Preview 20H1
问题在哪里
Hypervisor 以及其分类 Type-1 和 Type-2
何为 Hypervisor
Hypervisor
又称Virtual Machine Monitor(VMM)
是用于创建和运行虚拟机(VM)的计算机软件,固件或硬件.承载Hypervisor
和虚拟机的计算机称为宿主机(Host Machine
),运行于宿主机上的虚拟机称为客户机(Guest Machine
). Hypervisor
为客体操作系统提供虚拟的作业平台并管理客体操作系统,使得不同操作系统的众多实例可以共享虚拟的硬件资源.
可以简单地理解为 Hypervisor 为虚拟机的运行提供了软件层面的基础.
Hypervisor 通常分为两类, Type-1 和 Type-2.
何为 Type-1 Hypervisors
Type-1 Hypervisors, 又称原生(native)hypervisors 或裸机(bare-metal)hypervisors. 这一类型的 hypervisor 直接运行在硬件层面上来管理虚拟机.因此,有时被称为裸机 hypervisor.
像Xen
,VMware ESX/ESXi
,Microsoft Hyper-V
, Oracle VM Server for x86
都是 Type-1 Hypervisor.
何为 Type-2 Hypervisors
Type-2 Hypervisors, 有时也叫 Hosted Hypervisor. 这类 Hypervisor 像其他应用程序一样运行在常规的操作系统中.一个客户机作为一个进程运行在宿主机上.Type-2 Hypervisor 为客体操作系统提供抽象层.
像VMWare WorkStation
,Virtual Box
,Parallels Desktop for Mac
和QEMU
都是 Type-2 Hypervisor.
Type-1 和 Type-2 界线并不总是清晰的
从前面的概念来看,貌似 Type-1 和 Type-2 很好区分, 但有时候并不是那么简单的.例如, Linux 的 KVM(Kernel-based Virtual Machine)和 FreeBSD 的 bhyve 都是内核模块,它们可以高效地将系统变成 Type-1 Hypervisor; 与此同时,KVM 或 bhyve 都要和其他应用程序竞争资源,从这一角度出发它们又属于 Type-2 Hypervisor.
冲突是什么
当前 Docker 官方出品的 Windows 客户端, 叫做Docker Desktop for Windows
.而其正常运行的条件之一是系统开启了 Hyper-V 虚拟化服务. 由上文知 Hyper-V 是 Type-1 的 Hypervisor, 这将使得像 VMware 等作为 Type-