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

问题描述:

首先,Docker在我的Windows 10上正常工作时运行良好。在手动删除Hyper-V中的MobyLinuxVM之后,Windows 10上的Docker无法启动

然后我出于某种原因删除了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] 
+1

堆栈溢出的第一个答案伟大的感谢是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww

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

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

最后,通过VonC

+0

谢谢你的提醒:) – Yun

然后我重新安装泊坞窗,然后重新打开Hyper-V上的特征。

请务必先打开Hyper-V上的特征(和重启)

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

当前版本泊坞窗的Windows上运行64位Windows 10专业版,企业版和教育(1511月更新,构建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,试图删除保存的虚拟机并重新启动。

您应该在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
+0

谢谢您的回答,我解决了这个问题。我试过你的方法,但仍然无法工作。但是,我通过您提供的命令找到了一些东西。我把它写在帮助别人的答案上。最后,非常感谢。 – Yun