如何在Hyper-V系统上使用Vagrant和Windows的Docker?


12

过去,我使用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才能再次使用V。

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

讨论区

建议不要打开和关闭Hyper-V,因为它很耗时。

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

Answers:


9

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

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

虚拟机无法在Hyper-V之上运行,这是很正常的,您不应该在虚拟机监控程序中运行虚拟机监控程序,它们会努力协调硬件访问。

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

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

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.