在 Windows 10 中启动时 Docker 桌面崩溃

KBN*_*nda 5 virtualization hypervisor docker windows-10

我通过“Docker 桌面安装程序”在 Windows 10 上安装了 docker 桌面。

安装后我注销并登录。一段时间后它在启动时崩溃,说明如下消息

Docker.Core.Backend.BackendDestroyException:
One or more errors occurred.
   at Docker.Core.Pipe.NamedPipeClient.<TrySendAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters)
   at Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean withNotifications)
   at Docker.Actions.<>c__DisplayClass26_0.<StartAsync>b__0()
   at Docker.ApiServices.TaskQueuing.TaskQueue.<>c__DisplayClass18_0.<.ctor>b__1()

  System.AggregateException:
  One or more errors occurred.
     at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
     at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
     at Docker.Backend.LifecycleClient.DockerStart()
     at Docker.Backend.ContainerEngine.Linux.DoStart(Settings settings, String daemonOptions, Credential credential)
     at Docker.Backend.ContainerEngine.Linux.Start(Settings settings, String daemonOptions, Credential credential)

     Docker.Core.HttpBadResponseException:
     unable to fetch daemon.json: Get http://unix/engine/daemon.json: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
        at Docker.Backend.HttpClientExtensions.<ParseResponseBodyAsJsonAsync>d__2`1.MoveNext()
     --- 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.Backend.HttpClientExtensions.<GetJsonAsync>d__0`1.MoveNext()
Run Code Online (Sandbox Code Playgroud)

我卸载了,重新启动了我的 PC 并通过选择“Windows Container”进行安装。然后在重新启动后检查运行 docker。它成功启动。但是当我切换到 Linux 容器时,它再次失败并显示上述相同的错误消息。

小智 17

解决这个问题的主要目标是:

  1. 按 Windows“开始”按钮
  2. services通过键盘+输入enter
  3. 找到其中两个:“Hyper-V 虚拟机管理”和“Hyper-V 主机服务”
  4. (在每个服务上)单击鼠标右键,选择“属性”并在打开的窗口中将“启动类型”更改为“手动”,然后单击“确定”按钮。
  5. 再次单击每个鼠标右键并选择开始
  6. 按windows“开始”按钮,输入“hyper-v”,它会显示超级管理器,打开它
  7. 在 Hyper-V 管理器中选择“连接到服务器”,从弹出窗口中选择“本地计算机”
  8. 运行您的桌面 Docker,它现在可能正在工作,没有崩溃和异常。

  • 我在服务列表中没有看到 Hyper-V 虚拟机管理。你能让我知道在这种情况下如何解决吗? (15认同)
  • @DavidPiao 转到控制面板并选择“打开或关闭 Windows 功能”,然后搜索 Hyper-v 并在其下启用 Hyper-v 服务。 (3认同)

小智 -1

更新我的 Windows 版本似乎可以解决此问题。我也遇到了同样的错误,但更新 Windows 后,Docker 工作得非常顺利。

  • 欢迎来到堆栈溢出!请预留时间阅读[**关于页面**](http://stackoverflow.com/tour)并访问[**如何写出好的答案**](https://stackoverflow.com/帮助/如何回答),以便不仅为提出问题的用户提供帮助,还为更多有类似问题的用户提供帮助。 (2认同)