在手动删除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。
有人可以知道如何解决?
这里是屏幕截图和日志:
[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]
问题解决了! 我试过了VonC提供的方法,虽然仍然无法工作,但我发现有一点,当我运行命令.\MobyLinux.ps1 -Create
时,它会提示VNAT创建错误。然后我打开网络适配器列表,发现有很多由Hyper-V创建的“断开连接的适配器”(在这段时间内,我关闭并打开了几次,每次都无法识别旧的适配器哪个码头工可以)。因此,docker发现的适配器与Hyper-V找到的适配器不匹配,并会提示“对象已存在”,并且不会创建新的适配器。
最后,我们需要做的是打开设备管理器并删除不必要的适配器,然后docker成功启动!
最后,通过VonC
谢谢你的提醒:) – 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 comment和here,试图删除保存的虚拟机并重新启动。
您应该在
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
谢谢您的回答,我解决了这个问题。我试过你的方法,但仍然无法工作。但是,我通过您提供的命令找到了一些东西。我把它写在帮助别人的答案上。最后,非常感谢。 – Yun
堆栈溢出的第一个答案伟大的感谢是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww