Windows 10系统下Docker间歇性无法启动问题求助
Docker for Windows 10 Enterprise 间歇性启动失败(卡在MobyLinuxVM挂载环节)
问题描述
在Windows 10企业版中使用Docker时遇到间歇性启动问题:机器重启后,Docker有时能正常启动,有时完全无法启动。手动终止Docker进程并重新点击「Docker for Windows」也无法解决,查看日志发现进程卡在了挂载虚拟硬盘的环节,日志尾部内容如下:
[21:40:07.907][PowerShell ][Info ] Run script with parameters: -Create True -VhdPathOverride -VhdSize 64424509440 -SwitchSubnetAddress 10.0.75.0 -SwitchSubnetMaskSize 24 -CPUs 2 -Memory 2048 -IsoFile C:\Program Files\Docker\Docker\Resources\docker-for-win.iso... [21:40:07.907][HyperV ][Info ] Script started at 21:40:07.907 [21:40:07.907][HyperVGuids ][Info ] GUIDs installed [21:40:07.929][HyperV ][Info ] Module loaded at 21:40:07.929 [21:40:07.929][Firewall ][Info ] All existing rules are removed. [21:40:07.929][Firewall ][Info ] Opening ports for C:\Program Files\Docker\Docker\Resources\com.docker.proxy.exe... [21:40:07.960][Firewall ][Info ] Opening ports for SMB... [21:40:07.960][HyperV ][Info ] Creating Switch: DockerNAT... [21:40:07.992][Firewall ][Info ] Ports are opened [21:40:14.115][HyperV ][Info ] Switch created. [21:40:23.431][HyperV ][Info ] Set IP address on switch [21:40:24.387][HyperV ][Info ] Creating VM MobyLinuxVM... [21:40:26.443][HyperV ][Info ] Setting CPUs to 2 and Memory to 2048 MB [21:40:27.072][HyperV ][Info ] Attach VHD C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\MobyLinuxVM.vhdx
原因分析
从日志来看,进程卡在了虚拟硬盘挂载步骤,大概率是以下几种情况导致:
- MobyLinuxVM的虚拟磁盘文件(
.vhdx)出现损坏或权限异常 - DockerNAT交换机的配置在系统重启后没有正确初始化
- Hyper-V相关服务存在间歇性故障,无法正常处理VM挂载请求
- 系统剩余内存/磁盘空间不足,导致虚拟磁盘无法成功挂载
- Windows快速启动(Fast Startup)导致Hyper-V组件没有完全重置
解决方法
按以下步骤逐一排查,优先尝试前两个方法:
1. 重建损坏的虚拟磁盘和VM
这是最常见的解决手段,步骤如下:
- 打开任务管理器,终止所有Docker相关进程(包括
Docker Desktop、com.docker.proxy,以及Hyper-V相关的后台进程) - 打开Hyper-V管理器,找到
MobyLinuxVM,右键选择「删除」(如果找不到可以跳过这一步) - 定位到
C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\,备份MobyLinuxVM.vhdx后删除原文件 - 重新启动Docker Desktop,它会自动重新创建虚拟磁盘和MobyLinuxVM
2. 重置Docker网络配置
网络配置异常也会导致VM挂载失败:
- 打开Docker Desktop的设置界面,切换到
Resources->Network - 点击「Reset to factory defaults」按钮,确认重置网络配置
- 重启Docker Desktop,等待网络组件重新初始化完成
3. 重启Hyper-V核心服务
如果是Hyper-V服务的间歇性故障,可以手动重启相关服务:
- 以管理员身份打开PowerShell
- 依次执行以下命令:
Stop-Service vmms Stop-Service vmicvmsession Start-Service vmms Start-Service vmicvmsession - 执行完成后再尝试启动Docker Desktop
4. 检查系统资源
确保系统有足够的资源支撑Docker运行:
- 剩余内存至少保留4GB以上(Docker默认分配2GB,系统自身也需要预留空间)
- C盘剩余空间至少20GB,避免虚拟磁盘无法创建或挂载
5. 禁用Windows快速启动
快速启动可能导致Hyper-V组件没有完全重置:
- 打开控制面板,进入「电源选项」->「选择电源按钮的功能」
- 点击「更改当前不可用的设置」,取消勾选「启用快速启动(推荐)」
- 保存设置后重启电脑,再测试Docker启动情况
内容的提问来源于stack exchange,提问作者SanityCheck
相关产品推荐
相关产品推荐

