我很惊讶地发现 VirtualBox 和 docker 的 HyperKit 可以在 OS X 上同时运行虚拟机。在 Windows 或 Linux 上同时使用不同的虚拟机管理程序是不可能的。它如何在 OS X 上运行?
答案1
让我尝试回答这个不太简单的问题。
虚拟机管理程序有两种类型,总结如下: 维基百科:
类型 1,本机或裸机虚拟机管理程序
这些虚拟机管理程序直接在主机硬件上运行,以控制硬件并管理客户操作系统。因此,它们有时被称为裸机虚拟机管理程序。
类型 2 或托管虚拟机管理程序
这些虚拟机管理程序与其他计算机程序一样在传统操作系统 (OS) 上运行。
Hyper-V 是类型 1,这意味着安装后它将成为计算机。安装 Hyper-V 功能实际上会将已安装的 Windows 版本降级为虚拟机,但会为其分配 100% 的硬件资源。
Windows 版 VirtualBox 和 VMWare 属于类型 2,这意味着它们在 Windows 下作为普通程序工作,其中 CPU 被模拟为线程,因此理论上仍然可以在类型 1 虚拟机管理程序(如 Hyper-V)下运行。
当使用硬件虚拟化辅助来模拟不同的 CPU(即 Intel VT-x 和 AMD-V)时,就会出现问题。例如,在 64 位计算机上模拟 32 位 CPU 时,需要这样的硬件。
硬件虚拟化只能有一个所有者(或用户)。这意味着一次只能有一个虚拟机管理程序使用它,并且不允许在同一台计算机上运行两个 2 类虚拟机管理程序。
此外,具体到提到的 Docker,这不是一个虚拟机管理程序。维基百科解释:
Docker 是一个执行操作系统级虚拟化,又称“容器化”。
Docker 不进行任何 CPU 或设备模拟,但提供了一个薄层,用于将容器化的操作系统调用转换为主机操作系统调用。容器的操作系统与主机操作系统的差异非常有限,因为它必须足够相似才能对调用进行简单而轻松的转换。因此,Docker 在硬件使用方面不会与虚拟机管理程序发生冲突。