无法启动虚拟机“MobyLinuxVM”,因为其中一个 Hyper-V 组件未运行
Posted
技术标签:
【中文标题】无法启动虚拟机“MobyLinuxVM”,因为其中一个 Hyper-V 组件未运行【英文标题】:Failed to start the virtual machine 'MobyLinuxVM' because one of the Hyper-V components is not running 【发布时间】:2018-06-23 15:55:50 【问题描述】:我在使用 Window Server 安装 Docker 时遇到了一些问题。 环境清单:
1 Windows 10(物理机) 2.VMware® Workstation Player(12~以上)URL 3.VM 上的 Windows Server 2016 4.Docker CE for Windows(稳定版)URL
问题图片及内容
Unable to start: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: 'MobyLinuxVM' failed to start.
Failed to start the virtual machine 'MobyLinuxVM' because one of the Hyper-V components is not running.
'MobyLinuxVM' failed to start. (Virtual machine ID BBD755F7-05B6-4933-B1E0-F8ACA3D2467B)
The Virtual Machine Management Service failed to start the virtual machine 'MobyLinuxVM' because one of the Hyper-V components is not running (Virtual machine ID BBD755F7-05B6-4933-B1E0-F8ACA3D2467B).
at Start-MobyLinuxVM, <No file>: line 315
at <ScriptBlock>, <No file>: line 410
at Docker.Backend.ContainerEngine.Linux.DoStart(Settings settings, String daemonOptions) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:line 256
at Docker.Backend.ContainerEngine.Linux.Start(Settings settings, String daemonOptions) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:line 130
at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass9_0.<Register>b__0(Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeServer.cs:line 47
at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeServer.cs:line 145
如何解决这个问题,谢谢。
【问题讨论】:
您是否尝试在虚拟机中为 windows 运行 docker? 嗨 @Mathias 在 Windows 上是的 【参考方案1】:大家好,我找到了解决这个问题的答案,希望这个内容可以帮助遇到同样问题的人。 1.在虚拟机设置中设置虚拟机(如下图)
-
在 Windows Server 2016 中设置 Hyper-V(如下图)
普通话参考URL
【讨论】:
我在哪里可以找到第一个屏幕截图中的这些设置? @CharlesMorin 添加了另一张图片,它可以帮助你【参考方案2】:如果这有助于其他人解决此问题,我发现从管理员命令提示符运行这些命令修复了我的 Hyper-V 问题:
net stop vmms
net start vmms
然后我可以毫无问题地启动我的 docker 容器。
【讨论】:
我在 azure VM 中运行 Windows 10 Pro,它对我有用。【参考方案3】:如果您在安装了 Docker 的 Azure Windows 10 VM 上遇到此错误,并且这已经是 Nested Virtualization capable VM 即您的 Azure,这里是一个解决方案 VM 必须至少为 V3
sized(DV3 或 EV3):
确保通过运行 PowerShell cmdlet 启用 Windows Hyper-V 功能:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -Verbose
确保通过运行 PowerShell cmdlet 启用 Windows 容器功能:
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -Verbose
通过在提升的命令提示符中运行以下命令,确保 Hypervisor 设置为在引导配置数据库 (BCD) 中自动启动:
bcdedit /set hypervisorlaunchtype Auto
运行上述所有操作并重新启动 Azure VM 后,Docker 应该可以正常启动。
除了上面的 PowerShell cmdlet 设置虚拟机设置的答案是:
Set-VMProcessor -VMName <Enter-VM-Name> -ExposeVirtualizationExtensions $true -Verbose
仍有问题,尚未重新启动?! - 只需通过运行以下命令重新启动 Windows 服务:
net stop vmms
net start vmms
【讨论】:
Docker 在某些 Windows 更新后停止工作...感谢您的解决方案,它再次启动并运行 :) 我在 Win 10 Azure VM 中完全按照这些步骤操作,但 docker 仍然显示相同的错误。正在调查... 看起来 Docker 仅适用于某些类型的 Azure VM,例如 D*_v3 和 E*_v3。例如,它不适用于 D*_v2。将我的 VM 调整为 D*_v3 后,docker 启动成功。 是的,确实——第一条规则你的虚拟机必须支持“嵌套虚拟化”——检查azure docs;一旦 VM 已经具有可用的嵌套虚拟化,此答案就提供了解决方案。 正如您所解释的,标准 D2s v3(2 vcpus,8 GiB 内存)解决了这个问题。【参考方案4】:以管理员身份打开 PowerShell 或 CMD 会话。
键入以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
【讨论】:
自己发现需要在VM中运行,而不是在主机上。 这个answer has already been added【参考方案5】:我去了码头设置和General
部分选择安装other version
(页面底部作为链接)。我最初安装的是stable
,改成beta
/edge。
这没有任何问题。
【讨论】:
【参考方案6】:实际上原因是您没有在主机上启用 ExposeVirtualizationExtensions。 关闭嵌套虚拟机。 在主机上运行 PS 命令:
Set-VMProcessor -VMName "NESTED VM NAME" -ExposeVirtualizationExtensions $true
然后再次启动嵌套 VM(其中包含 docker)。
【讨论】:
【参考方案7】:这是一个嵌套虚拟化问题,用于修复运行 VMWare 6.5 和 Windows 10 来宾关闭 VM 并选择向来宾操作系统公开硬件辅助虚拟化选项。
【讨论】:
【参考方案8】:启用 Hyper-V 功能在 Azure VM 中还不够。您必须启用“嵌套虚拟化”,因此根据documentation 您应该选择v3
大小的VM:
所有 v3 虚拟机都支持嵌套虚拟化
调整大小后,VM 将重新启动,Hyper-V 中的 DockerVM 将运行。
【讨论】:
谢谢老兄,工作就像一个魅力!以上是关于无法启动虚拟机“MobyLinuxVM”,因为其中一个 Hyper-V 组件未运行的主要内容,如果未能解决你的问题,请参考以下文章