Docker Desktop启动失败本质是服务“已启动但未就绪”,因WSL2发行版未加载、根文件系统挂载失败或docker.sock不可达,导致com.docker.service虽显示运行却无法连接Docker daemon。

Docker Desktop 启动失败,不是服务没启,而是服务“启了但没活过来”——它卡在了依赖链的中间层。
wsl --shutdown 之后 dockerd 还没起来?先看 WSL2 发行版是否真就绪
Windows 上的 com.docker.service 服务启动成功,只代表 Windows 服务管理器把进程拉起来了;但它真正要干活,得连上 WSL2 里的 dockerd。如果 WSL2 发行版本身没加载、根文件系统挂载失败、或 /var/run/docker.sock 路径不可达,服务状态就是“已启动”,但 docker info 仍报 Cannot connect to the Docker daemon。
- 执行
wsl -l -v,确认默认发行版状态是Running,不是Stopped或空白 - 执行
wsl -d docker-desktop(或wsl -d docker-desktop-data)手动进入,看能否进 shell;进不去说明发行版损坏 - 检查
%LOCALAPPDATA%Dockerwsldataext4.vhdx文件是否存在且未被杀毒软件锁定(常见于 Windows Defender 实时防护误删锁文件) - 若发行版异常,别直接重装 Docker Desktop,先用
wsl --unregister docker-desktop清掉再重启 Docker Desktop,让它自动重建
com.docker.service 显示“正在运行”,但实际卡在 START_PENDING
服务管理器里看到状态是 START_PENDING,本质是 SCM(服务控制管理器)在等某个依赖服务就绪,而这个依赖大概率是 LxssManager(WSL 子系统服务)或 vmms(Hyper-V 管理服务)。它们任何一个没完全初始化,com.docker.service 就会悬停不动。
- 打开
services.msc,检查LxssManager和vmms是否都为“正在运行”,且启动类型是“自动(延迟启动)” - 若
LxssManager启动失败,错误日志常含0x80070005(拒绝访问),说明 NTFS 权限被重置过,需用管理员 PowerShell 执行:icacls "$env:LOCALAPPDATAPackagesMicrosoft.WSL*" /grant "*S-1-15-2-1:(OI)(CI)(RX)" /T - 某些安全软件(如 CrowdStrike、Bitdefender)会 hook
svchost.exe并静默终止wslservice.exe,临时禁用后测试
Docker Desktop 图标亮了,但命令行 docker info 报错:检查 socket 转发链路
GUI 启动成功 ≠ CLI 可用。Docker Desktop 默认通过 WSL2 的 docker.sock 转发请求,路径是 \wsl$docker-desktop
undocker.sock。一旦这个路径不可达、权限不对、或转发服务(docker-desktop-wsl)没注册,命令行就彻底失联。
- 在 PowerShell 中执行:
Get-Service | Where-Object {$_.Name -like "*docker*"} | Select-Object Name,Status,确认docker-desktop-wsl也在运行中 - 手动测试 socket 路径:
Test-Path "\wsl$docker-desktop undocker.sock",返回False就说明 WSL2 内部转发没建好 - 若路径存在但 CLI 仍报错,可能是 Windows 用户账户没加入
docker-users组(虽然新版默认绕过此限制,但旧策略残留仍可能生效)
为什么重装 Docker Desktop 常无效?因为服务就绪不等于数据就绪
重装只会覆盖 %PROGRAMFILES%Docker 和注册表项,但 WSL2 数据盘(ext4.vhdx)、用户配置(%APPDATA%Docker Desktop)、甚至 LxssManager 的注册表缓存都原封不动。这些残留项和新版本不兼容,就会导致服务“看似启动”,实则无法完成初始化握手。
- 重装前必须先执行:
wsl --shutdown+wsl --unregister docker-desktop+wsl --unregister docker-desktop-data - 手动删除
%LOCALAPPDATA%Dockerwsl整个目录(不要只删data子目录,distro也要清) - 清理注册表中残留项:
HKEY_CURRENT_USERSoftwareDocker Desktop和HKEY_LOCAL_MACHINESOFTWAREDocker Desktop(操作前备份)
最常被忽略的是:WSL2 发行版的 ext4.vhdx 文件即使被 unregister,也可能因 Windows 文件系统缓存机制,在磁盘上残留元数据碎片,导致新发行版创建时校验失败——这种问题只能靠磁盘检查(chkdsk /f)或换路径重建解决。


















