以前,我使用VirtualBox(VB)和Vagrant(V)运行VM。由于我安装了docker-for-windows(DfW)并运行了V,因此VB抱怨Hyper-V(HV)。

[user@localhost ~]$ vagrant up
Stderr: VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component
ConsoleWrap, interface IConsole


尽管此链接表明V支持HV ,上面的错误信息是矛盾的。为什么VB看起来与HV不兼容,为什么V表示它支持HV,以及如何防止需要再次使用HV才能禁用HV。

| Product    | Version |
|:-----------|--------:|
| Vagrant    |   2.0.1 |
| VirtualBox |   5.2.4 |
| Windows    |      10 | 


讨论

开启和关闭Hyper-V的建议不是首选的解决方案,因为它很费时间。

如果可以在同一时间运行V和DfW通过替换VB可以选择系统。

#1 楼

Hyper-V激活后,通过引用Microsoft Technet的SO上的此答案得到确认,它会将处理器的VT-X指令屏蔽到其顶部的OS,并且Windows像来宾一样运行。

用于Windows的Docker需要Hyper-V才能工作,因此禁用它并不是一个选择。

没有办法让虚拟机在Hyper-V之上运行,这很正常,您不应该在其中运行虚拟机监控程序一个虚拟机管理程序,他们将努力协调硬件访问。

我认为最好的解决方法是使用这种方式从Hyper-V提供程序而不是虚拟盒式计算机上通过流浪汉创建hyper-V虚拟机您可以在同一会话上创建VM或容器。

旁注,vagrant在hyper-v提供程序文档页面(在搜索上面添加的链接时找到)上已经有关于此的说明:


警告:启用Hyper-V将导致VirtualBox,VMware和任何其他虚拟化技术不再起作用。有关创建启动项以在不启用Hyper-V的情况下启动Windows的简便方法,请参阅此博客文章。如果有时您将需要其他管理程序。


#2 楼

与Vagrant一​​起,您可以使用传统的传统“ Docker Toolbox”而不是“ Windows Docker”。我相信这意味着Docker自从在Linux VM中运行以来将会很慢。
https://docs.docker.com/toolbox/toolbox_install_windows/
除此之外,是的,我一直在重启计算机我需要适用于Docker的HyperV或需要时将其删除。