Docker启动失败

我已经安装了 Docker,然后我已经启动了 Docker。Docker 说“Docker 正在启动”。然后,Docker 说“Docker 无法启动”。拜托,你能帮我吗?

Docker 错误详情:

System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:Users---AppDataLocalDockerwsldistro: exit code: -1
 stdout: The operation could not be started because a required feature is not installed.

 stderr: 
   at Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.ApiServicesWSL2WslCommand.cs:line 146
   at Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.DesktopEnginesWSL2WSL2Provisioning.cs:line 169
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.DesktopEnginesWSL2WSL2Provisioning.cs:line 78
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__25.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.DesktopEnginesWSL2LinuxWSL2Engine.cs:line 99
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.ApiServicesStateMachinesTaskExtensions.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.ApiServicesStateMachinesStartTransition.cs:line 67
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.ApiServicesStateMachinesStartTransition.cs:line 92
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.Engines.Engines.<WaitCurrentTransitionsAsync>d__30.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.DesktopEnginesEngines.cs:line 358
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.Engines.<RestartAsync>d__26.MoveNext() in C:workspacesPR-15138srcgithub.comdockerpinatawinsrcDocker.DesktopEnginesEngines.cs:line 250

回答

我的解决方案:

我已经检查了Docker的先决条件。我在先决条件中应用了第二步。(带有手动安装步骤的用于 Linux 安装的 Windows 子系统)它已为我修复了错误。


如果您收到这样的错误(在此安装过程中):

WslRegisterDistribution failed with error: 0x80370114 Error: 0x80370114 The operation could not be started because a required feature is not installed.(我遇到了这个错误。)请应用这个。

 These steps are quoted from the "this" named hyperlink above. 
1. Open "Windows Security"
2. Open "App & Browser control"
3. Click "Exploit protection settings" at the bottom
4. Switch to "Program settings" tab
5. Locate "C:WINDOWSSystem32vmcompute.exe" in the list and expand it
6. Click "Edit"
7. Scroll down to "Code flow guard (CFG)" and uncheck "Override system settings"
8. Start vmcompute from powershell "net start vmcompute"
9. Then go back and command wsl --set-default-version 2

我这样解决了我的问题。祝你好运 :)

  • 虽然该链接可能会提供解决方案,但它可能会变得陈旧/损坏等,因此请编辑您的帖子并添加对您有用的解决方案(末尾的链接)作为答案的一部分。原因如下:[你的答案在另一个城堡:什么时候答案不是答案?](https://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when- is-an-answer-not-an-answer)

回答

在我的场景中,我需要安装 WSL 2 而我的电脑没有。安装它使docker运行成功。如果您是第一次安装 docker,请尝试以下步骤。

首先,我们需要从 Windows 激活 WSL。

控制面板 -> 程序 -> 打开或关闭 Windows 功能

你需要检查

  • 适用于 Linux 的 Windows 子系统
  • Windows 管理程序平台
  • 虚拟机平台

然后点击确定

之后,您需要启用 WSL 1 并将其更新为 WSL 2 ( https://docs.microsoft.com/en-us/windows/wsl/install-win10#manual-installation-steps )

要安装内置的 WSL 1,请以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

之后从 Microsoft 下载 WSL 2 更新。使用以下链接

适用于 x64 机器的 WSL2 Linux 内核更新包

安装上述包后,需要将WSL 2设置为默认版本。

以管理员身份打开 PowerShell 并运行:

wsl --set-default-version 2

现在重新启动您的计算机。现在你的 docker 应该可以运行了。

请注意,要更新到 WSL 2,您必须运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,Build 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,Build 19041 或更高版本。
  • 完美的!工作完美,为我修好了。

以上是Docker启动失败的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>