手动删除Hyper-V中的MobyLinuxVM后,Windows 10上的Docker无法启动

问题描述 投票:12回答:4

起初,docker在我的Windows 10上运行正常。

然后我出于某种原因删除了Hyper-V中的MobyLinuxVM。之后,码头工作无法工作。

然后我关闭Hyper-V的功能并卸载docker(当然计算机已重新启动)。

然后我重新安装docker并再次打开Hyper-V的功能。但是码头工作者仍然无法工作。

我在谷歌尝试了一些解决方案,但问题仍然存在。 我在docker启动期间检查了MobyLinuxVM的状态,发现从未创建MobyLinuxVM。

谁能知道如何解决?

这是屏幕截图和日志:

https://i.stack.imgur.com/8GbLw.png

[Version: 1.13.1 (10072)
Channel: Stable
Sha1: 94675c5a765e2c51fba6c10b87e0a1a4ed3dde51
Started on: 2017/02/23 09:35:27.478
Resources: C:\Program Files\Docker\Docker\Resources
OS: Windows 10 Pro
Edition: Professional
Id: 1511
Build: 10586
BuildLabName: 10586.672.amd64fre.th2_release_sec.161024-1825
File: C:\Users\212599222\AppData\Local\Docker\log.txt
CommandLine: "C:\Program Files\Docker\Docker\Docker for Windows.exe" 
You can send feedback, including this log file, at https://github.com/docker/for-win/issues
\[09:35:27.603\]\[GUI            \]\[Info   \] Starting...
\[09:35:28.290\]\[Tracking       \]\[Info   \] Crash report and usage statistics are enabled
\[09:35:28.306\]\[SegmentApi     \]\[Info   \] Usage statistic: appLaunched
\[09:35:28.625\]\[SegmentApi     \]\[Error  \] Failed to track event appLaunched: An error occurred while sending the request.
\[09:35:28.625\]\[NamedPipeClient\]\[Info   \] Sending Version()...
\[09:35:28.641\]\[NamedPipeClient\]\[Info   \] Received response for Version
\[09:35:28.641\]\[SegmentApi     \]\[Info   \] Usage statistic: heartbeat
\[09:35:28.641\]\[SegmentApi     \]\[Error  \] Failed to track event heartbeat: An error occurred while sending the request.
\[09:34:34.255\]\[BackendServer  \]\[Info   \] Started
\[09:35:28.641\]\[NamedPipeServer\]\[Info   \] Version()
\[09:35:28.641\]\[NamedPipeServer\]\[Info   \] Version done in 00:00:00.
\[09:35:28.841\]\[Updater        \]\[Info   \] Checking for updates on channel Stable...
\[09:35:28.841\]\[NamedPipeClient\]\[Info   \] Sending Start(Docker.Core.Settings)...
\[09:35:28.858\]\[NamedPipeServer\]\[Info   \] Start(Docker.Core.Settings)
\[09:35:28.863\]\[UpdateFeedDownloader\]\[Error  \] The remote name could not be resolved: 'download.docker.com'
\[09:35:28.863\]\[Updater        \]\[Info   \] No update available
\[09:35:28.862\]\[PowerMode      \]\[Info   \] Stop
\[09:35:28.863\]\[HyperV         \]\[Info   \] Stop
\[09:35:28.863\]\[PowerShell     \]\[Info   \] Run script with parameters: -Stop True...
\[09:35:28.863\]\[PowerShell     \]\[Info   \] Creating a Runspace Pool...
\[09:35:29.909\]\[PowerShell     \]\[Info   \] Runspace Pool created (Min=1, Max=2)
\[09:35:29.969\]\[HyperV         \]\[Info   \] Script started at 09:35:29.964
\[09:35:33.783\]\[HyperV         \]\[Info   \] Module loaded at 09:35:33.783
\[09:35:33.983\]\[HyperV         \]\[Info   \] VM MobyLinuxVM does not exist
\[09:35:33.983\]\[HyperV         \]\[Debug  \] \[stop\] took 00:00:05.1195593 to run
\[09:35:33.983\]\[OptimizeDisk   \]\[Info   \] Optimize
\[09:35:33.983\]\[PowerShell     \]\[Info   \] Run script...
\[09:35:33.999\]\[Moby           \]\[Info   \] Stop
\[09:35:34.014\]\[HyperVGuids    \]\[Info   \] Installing GUIDs...
\[09:35:34.014\]\[PowerMode      \]\[Info   \] Start
\[09:35:34.014\]\[HyperV         \]\[Info   \] Create
\[09:35:34.014\]\[PowerShell     \]\[Info   \] Run script with parameters: -Create True -VhdPathOverride  -SwitchSubnetAddress 10.0.75.0 -SwitchSubnetMaskSize 24 -CPUs 2 -Memory 2048 -IsoFile C:\Program Files\Docker\Docker\Resources\mobylinux.iso...
\[09:35:34.014\]\[HyperVGuids    \]\[Info   \] GUIDs installed
\[09:35:34.033\]\[HyperV         \]\[Info   \] Script started at 09:35:34.033
\[09:35:34.036\]\[Firewall       \]\[Info   \] Removing all existing rules...
\[09:35:34.115\]\[HyperV         \]\[Info   \] Module loaded at 09:35:34.115
\[09:35:34.315\]\[HyperV         \]\[Info   \] Enabled workaround for Build 10586 VMSwitch issue
\[09:35:34.518\]\[Firewall       \]\[Info   \] All existing rules are removed.
\[09:35:34.518\]\[Firewall       \]\[Info   \] Opening ports for C:\Program Files\Docker\Docker\Resources\com.docker.proxy.exe...
\[09:35:35.451\]\[Firewall       \]\[Info   \] Opening ports for SMB...
\[09:35:36.358\]\[Firewall       \]\[Info   \] Ports are opened
\[09:36:31.192\]\[HyperV         \]\[Info   \] Creating Switch: DockerNAT...
\[09:37:26.994\]\[HyperV         \]\[Info   \] Switch created.
\[09:37:28.917\]\[Linux          \]\[Error  \] Failed to start: Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: The object already exists.

. Let's retry
\[09:37:28.917\]\[PowerShell     \]\[Info   \] Run script...
\[09:37:42.595\]\[HyperV         \]\[Info   \] Hyper-V is running
\[09:37:42.595\]\[PowerMode      \]\[Info   \] Stop
\[09:37:42.595\]\[HyperV         \]\[Info   \] Stop
\[09:37:42.596\]\[PowerShell     \]\[Info   \] Run script with parameters: -Stop True...
\[09:37:42.602\]\[HyperV         \]\[Info   \] Script started at 09:37:42.602
\[09:37:42.707\]\[HyperV         \]\[Info   \] Module loaded at 09:37:42.707
\[09:37:42.728\]\[HyperV         \]\[Info   \] VM MobyLinuxVM does not exist
\[09:37:42.728\]\[HyperV         \]\[Debug  \] \[stop\] took 00:00:00.1332364 to run
\[09:37:42.728\]\[OptimizeDisk   \]\[Info   \] Optimize
\[09:37:42.728\]\[PowerShell     \]\[Info   \] Run script...
\[09:37:42.744\]\[Moby           \]\[Info   \] Stop
\[09:37:42.752\]\[HyperV         \]\[Info   \] Destroy
\[09:37:42.753\]\[PowerShell     \]\[Info   \] Run script with parameters: -Destroy True -KeepVolume True...
\[09:37:42.761\]\[HyperV         \]\[Info   \] Script started at 09:37:42.761
\[09:37:42.850\]\[HyperV         \]\[Info   \] Module loaded at 09:37:42.850
\[09:37:42.864\]\[HyperV         \]\[Info   \] VM MobyLinuxVM does not exist
\[09:37:42.865\]\[HyperV         \]\[Info   \] Destroying Switch DockerNAT...
\[09:38:02.148\]\[HyperV         \]\[Info   \] Removing VM MobyLinuxVM...
\[09:38:02.163\]\[HyperV         \]\[Debug  \] \[destroy\] took 00:00:19.4109973 to run
\[09:38:02.163\]\[Firewall       \]\[Info   \] Closing ports...
\[09:38:02.163\]\[Firewall       \]\[Info   \] Removing all existing rules...
\[09:38:02.335\]\[Firewall       \]\[Info   \] Removing DockerProxy...
\[09:38:02.512\]\[Firewall       \]\[Info   \] Removed DockerProxy.
\[09:38:02.694\]\[Firewall       \]\[Info   \] Removing DockerSmbMount...
\[09:38:02.889\]\[Firewall       \]\[Info   \] Removed DockerSmbMount.
\[09:38:03.050\]\[Firewall       \]\[Info   \] All existing rules are removed.
\[09:38:03.050\]\[Firewall       \]\[Info   \] Ports are closed
\[09:38:03.051\]\[HyperVGuids    \]\[Info   \] Removing GUIDs...
\[09:38:03.056\]\[HyperVGuids    \]\[Info   \] GUIDs removed
\[09:38:03.057\]\[HyperV         \]\[Info   \] Create
\[09:38:03.057\]\[PowerShell     \]\[Info   \] Run script with parameters: -Create True -VhdPathOverride  -SwitchSubnetAddress 10.0.75.0 -SwitchSubnetMaskSize 24 -CPUs 2 -Memory 2048 -IsoFile C:\Program Files\Docker\Docker\Resources\mobylinux.iso...
\[09:38:03.063\]\[HyperV         \]\[Info   \] Script started at 09:38:03.063
\[09:38:03.122\]\[HyperV         \]\[Info   \] Module loaded at 09:38:03.122
\[09:38:03.178\]\[HyperV         \]\[Info   \] Enabled workaround for Build 10586 VMSwitch issue
\[09:38:13.824\]\[HyperV         \]\[Info   \] Creating Switch: DockerNAT...
\[09:38:28.719\]\[HyperV         \]\[Info   \] Switch created.
\[09:38:29.134\]\[PowerMode      \]\[Info   \] Stop
\[09:38:29.134\]\[HyperV         \]\[Info   \] Stop
\[09:38:29.135\]\[PowerShell     \]\[Info   \] Run script with parameters: -Stop True...
\[09:38:29.142\]\[HyperV         \]\[Info   \] Script started at 09:38:29.141
\[09:38:29.223\]\[HyperV         \]\[Info   \] Module loaded at 09:38:29.223
\[09:38:29.236\]\[HyperV         \]\[Info   \] VM MobyLinuxVM does not exist
\[09:38:29.237\]\[HyperV         \]\[Debug  \] \[stop\] took 00:00:00.1021625 to run
\[09:38:29.237\]\[OptimizeDisk   \]\[Info   \] Optimize
\[09:38:29.237\]\[PowerShell     \]\[Info   \] Run script...
\[09:38:29.247\]\[Moby           \]\[Info   \] Stop
\[09:38:29.253\]\[HyperV         \]\[Info   \] Destroy
\[09:38:29.254\]\[PowerShell     \]\[Info   \] Run script with parameters: -Destroy True -KeepVolume True...
\[09:38:29.262\]\[HyperV         \]\[Info   \] Script started at 09:38:29.261
\[09:38:29.335\]\[HyperV         \]\[Info   \] Module loaded at 09:38:29.335
\[09:38:29.347\]\[HyperV         \]\[Info   \] VM MobyLinuxVM does not exist
\[09:38:29.348\]\[HyperV         \]\[Info   \] Destroying Switch DockerNAT...
\[09:38:38.264\]\[HyperV         \]\[Info   \] Removing VM MobyLinuxVM...
\[09:38:38.276\]\[HyperV         \]\[Debug  \] \[destroy\] took 00:00:09.0233008 to run
\[09:38:38.276\]\[Firewall       \]\[Info   \] Closing ports...
\[09:38:38.276\]\[Firewall       \]\[Info   \] Removing all existing rules...
\[09:38:38.488\]\[Firewall       \]\[Info   \] All existing rules are removed.
\[09:38:38.488\]\[Firewall       \]\[Info   \] Ports are closed
\[09:38:38.488\]\[HyperVGuids    \]\[Info   \] Removing GUIDs...
\[09:38:38.488\]\[HyperVGuids    \]\[Info   \] GUIDs removed
\[09:38:38.493\]\[NamedPipeServer\]\[Error  \] Unable to execute Start: Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: The object already exists.

    at Docker.Backend.HyperV.RunScript(String action, Dictionary`2 parameters)
   at Docker.Backend.ContainerEngine.Linux.Start(Settings settings)
   at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass8_0.<Register>b__0(Object\[\] parameters)
   at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object\[\] parameters)
\[09:38:38.565\]\[NamedPipeClient\]\[Error  \] Unable to send Start: Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: The object already exists.


\[09:38:38.567\]\[Notifications  \]\[Error  \] Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: The object already exists. 


\[09:39:59.534\]\[SegmentApi     \]\[Info   \] Usage statistic: actionMenuSettings
\[09:40:07.295\]\[ErrorReportWindow\]\[Info   \] Open logs][1]
windows docker startup
4个回答
11
投票

然后我重新安装docker并再次打开Hyper-V的功能。

确保首先打开Hyper-V的功能(并重启)

然后reinstall Docker for Windows。 见“What to know before you install”:

当前版本的Docker for Windows在64位Windows 10 Pro,Enterprise和Education(1511年11月更新,Build 10586或更高版本)上运行。

必须启用Hyper-V软件包才能使Docker for Windows正常工作。如果需要,Docker for Windows安装程序将为您启用它。

您的特定错误消息在docker/for-win issue 248中报告,之前在issue 214中报告

Unable to create: 
The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: 
The object already exists.

作为noted in this commenthere,尝试删除已保存的VM并重新启动。

你应该在C:\Program Files\Docker\Docker\resources运行命令。 因此,让我优化您可以运行的命令序列:

  • 退出应用程序
  • 停止服务com.docker.service
  • cd 'C:\Program Files\Docker\Docker\resources'
  • .\MobyLinux.ps1 -Destroy
  • 检查VHDX文件(C:\Users\Public\Public Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx)是否已删除
  • .\MobyLinux.ps1 -Create

8
投票

问题解决了!!我尝试了VonC提供的方法,虽然仍然无法工作,但我发现有一件事,当我运行命令.\MobyLinux.ps1 -Create时,它会提示VNAT创建错误。然后我打开网络适配器列表,发现有很多“断开连接的适配器”是由Hyper-V创建的(在这段时间里,我关闭并打开几次,每次它都无法识别旧的适配器哪个码头可以)。所以docker找到的适配器与Hyper-V找到的适配器不匹配,并且会提示“对象已经存在”并且不会创建新对象。

最后,我们需要做的是打开设备管理器并删除不必要的适配器 - 然后docker成功启动!

最后,非常感谢VonC的第一个答案


0
投票

它不支持hyperV单元路径上的空格。 您需要在hyperV配置上配置一个没有空格的路径。


0
投票

我也遇到了类似的问题,在我的情况下,我试图删除MobyLinux VM而不知道所有依赖项,因此当Docker启动时,虚拟机无法在Hyper-V中创建DockerNAT虚拟交换机。 Docker尝试创建一个正在运行的虚拟机(在启动docker to monitor时打开Hyper-V)但vm失败并停止。

我修复了:

  • 卸载Docker
  • 我更改了默认的hyper-v虚拟机文件夹HyperVsettings createdFolder
  • 重新安装Docker。
  • Docker在新文件夹中创建了一个新的MobyLinux文件,现在一切正常。
© www.soinside.com 2019 - 2024. All rights reserved.