无法在 windows 开始 docker

Can't start docker on windows

尝试在 Windows 10 pro 上启动 docker 时,我继续收到以下错误。我的 HyperV 已打开并且 运行: 版本 18.04.0-ce-win62 (17151) 通道:边缘 e0a85f6

如有任何帮助,我们将不胜感激!

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

您可能需要修复 vmcompute 的“Control Flow Guard”设置。

(注意是CFG is an exploit-protection mechanism,所以改的时候要注意,明白为什么存在。)

  1. 打开Windows Security

  2. 打开App & Browser control

  3. 点击Exploit protection settings

  4. 切换到 Program settings 选项卡

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

  6. 点击Edit

  7. 向下滚动到 Control flow guard (CFG) 并取消选中 Override system settings

  8. 从 powershell 启动 vmcompute net start vmcompute(或者从系统服务应用启动 Hyper-V Host Compute Service

  9. 重启电脑

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

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

当我无法 运行 docker 时,以上对我有用,然后我意识到我无法连接到 hyper-v 上的本地计算机。这就是最终起作用的方法。

试试这个。解决了很多人的问题

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

如果你面对

Unable to stop Hyper-V VM: Service 'Hyper-V Host Compute Service (vmcompute)' cannot be started due to the following error: Cannot start service vmcompute on computer '.'.

这个错误然后按照以下步骤操作:

  1. 打开"Window Security"
  2. 打开"App & Browser control"
  3. 点击底部的"Exploit protection settings"
  4. 切换到 "Program settings" 选项卡
  5. 在列表中找到 "C:\WINDOWS\System32\vmcompute.exe" 并展开它
  6. 点击"Edit"
  7. 向下滚动到 "Code flow guard (CFG)" 并取消选中 "Override system settings"
  8. 从 powershell 启动 vmcompute "net start vmcompute"

我的解决方法是在我的 BIOS 中启用虚拟化。它将在 Advanced > CPU Configuration > SVM - 确保它已启用

我尝试从 C:\Program Files\Docker\Docker\Docker 运行 Desktop.exe 它奏效了。

此外,我添加的另一件事是我保留了 Cisco AnyConnect VPN 服务 运行ning(尽管 none 的 VPN 已连接)。我知道这一点听起来很奇怪,但我想分享一下。

如果你和我一样,已经在你的系统上安装了 wsl2 发行版(在你安装 Docker 桌面版时)并且上面的所有答案都没有帮助,那么看看你的发行版是否真的是 运行 通过点击命令 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 实例,这解决了问题 在我的系统上。 Docker 桌面 window 在 wsl 实例关闭后立即启动。

我认为问题是我已经在此 wsl 实例中安装了 docker。