无法在Windows上启动Docker

12

当我尝试在Windows 10专业版上启动Docker时,仍然会出现以下错误。我的HyperV已经打开并运行: 版本18.04.0-ce-win62(17151) 渠道:边缘 e0a85f6

任何帮助都将不胜感激!

无法创建:正在运行的命令停止,因为首选变量“ErrorActionPreference”或常规参数设置为Stop:Hyper-V在尝试访问计算机'C001715587'上的对象时遇到错误,因为未找到该对象。该对象可能已被删除。请验证计算机上的Virtual Machine Management服务正在运行。 在New-Switch处,:line 117 在,:line 394 在C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeClient.cs的Docker.Core.Pipe.NamedPipeClient.Send(String action,Object [] parameters):第36行 在C:\gopath\src\github.com\docker\pinata\win\src\Docker.Windows.Actions.DoStart(SynchronizationContext syncCtx,Boolean showWelcomeWindow,Boolean executeAfterStartCleanup)的Docker.Actions.cs:第75行 在C:\gopath\src\github.com\docker\pinata\win\src\Docker.Windows.Actions.cs的Docker.Actions.<>c__DisplayClass15_0.b__0():第59行 在C:\gopath\src\github.com\docker\pinata\win\src\Docker.WPF.TaskQueue.cs中,Docker.WPF.TaskQueue.<>c__DisplayClass19_0.b__1():第59行


你是否验证了计算机上的虚拟机管理服务是否正在运行? - Ken White
6个回答

23

您可能需要修复vmcompute的"控制流保护"设置。

(请注意,CFG是一种防控攻击的机制,因此在更改它时要注意,并了解其存在的原因。)

  1. 打开Windows安全中心

  2. 打开应用程序和浏览器控制

  3. 点击防控攻击设置

  4. 切换到程序设置选项卡

  5. 在列表中找到C:\WINDOWS\System32\vmcompute.exe并展开它

  6. 点击编辑

  7. 滚动至控制流保护(CFG)并取消勾选覆盖系统设置

  8. 从powershell启动vmcompute:net start vmcompute(或者从系统服务应用程序中启动Hyper-V主机计算服务

  9. 重启电脑

  10. 以管理员身份打开Hyper-V

  11. 连接到服务器,本地计算机,确定

当我无法运行Docker时,以上步骤对我有效。然后我发现我不能在hyper-v上连接到我的本地机器。这是最终起作用的方法。


请注意,该过程可以从“打开'应用程序和浏览器控制'”开始。此外,在更改这些设置后,我能够启动Docker。在启动Docker之前,“Hyper-V主机计算服务”应该在运行状态。不需要重新启动系统。结果可能有所不同。 - ingyhere
1
在我的情况下,所有的步骤都是必要的来解决这个问题。谢谢! - Victor Calatramas
以下步骤(1-8)也为我解决了以下错误 - 无法停止 - 运行的命令已停止,因为首选变量“ErrorActionPreference”或常见参数设置为Stop:由于以下错误无法启动服务'Hyper-V主机计算服务(vmcompute)':无法在计算机'.'上启动服务vmcompute。 - Kunal Patil

5

试试这个。它能解决很多人的排序问题。

cd "C:\Program Files\Docker\Docker" 
./DockerCli.exe -SwitchDaemon

1
在尝试了 @J.D 的方法后它并没有起作用,但是这个方法对我有效。只要警告你可能需要两种方法都做一下。 - Robert Franklin
1
非常感谢你,Tejashree。在尝试了许多无用的解决方案后,你的方法终于对我起作用了。你真是太棒了! - gizaom
1
如果您想使用Windows容器,这是可行的。但是,如果您正在使用WSL / Linux容器,则可以启动Docker,但无法访问/运行Linux映像。 - Dave Mackey

1
如果您和我一样,在安装Docker Desktop时已经在系统上安装了WSL2发行版,而且之前提供的所有答案都没有帮助到您,那么请运行命令wsl -l -v检查您的发行版是否正在运行。
wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

如果是这样,那么通过运行wsl -t Ubuntu-20.04关闭您的wsl实例来解决问题。在我系统上这种方法有效。当wsl实例关闭后,Docker桌面窗口会立即打开。
我认为问题在于我已经在这个wsl实例中安装了docker。

可以了!以管理员身份打开“CMD”,执行“wsl --shutdown”命令并确认Wsl应用程序已运行,然后Docker就能完美启动了。 - Paul Bradbury
我终于解决了我的笔记本电脑上的问题,是你的答案带我找到了解决方案。我的docker-desktop-data分布一直停止,所以我退出了Docker,注销了docker桌面和docker-desktop-data两个分布,然后重新启动了Docker,这样就可以工作了。之前仅仅只有Windows容器在运行,现在Linux容器也可以正常运行了。命令是在提升权限的PowerShell环境下执行wsl --unregister docker-desktop-data(取消注册docker-desktop-data)。希望对某些人有所帮助。 - Kirkaiya

1
我尝试从C:\Program Files\Docker\Docker\Docker Desktop.exe运行它,然后它就可以工作了。
另外,我增加的一点是我保持了Cisco AnyConnect VPN服务的运行(虽然没有任何VPN连接)。我知道这个点听起来很奇怪,但我想分享一下。

0

如果您遇到以下错误:

无法停止 Hyper-V VM:由于以下错误,服务“Hyper-V Host Compute Service(vmcompute)”无法启动:无法在计算机“。”上启动服务vmcompute。

请按照以下步骤操作:

  1. 打开“Windows安全性”
  2. 打开“应用程序和浏览器控制”
  3. 在底部单击“利用保护设置”
  4. 切换到“程序设置”选项卡
  5. 在列表中找到“C:\WINDOWS\System32\vmcompute.exe”,并展开它
  6. 单击“编辑”
  7. 向下滚动到“代码流保护(CFG)”,取消选中“覆盖系统设置”
  8. 从PowerShell启动vmcompute:“net start vmcompute”

0
我的解决方法是在BIOS中启用虚拟化。它会在“高级> CPU配置> SVM”中,确保它已启用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接