Skip to content

Docker Desktop 在 Windows 上无限显示"正在启动"的解决方案

问题描述

在 Windows 系统上安装 Docker Desktop 后,应用程序界面持续显示"Docker Desktop Starting..."但始终无法完成启动过程。这是一个常见问题,通常与 Windows 子系统 for Linux (WSL2) 相关,也可能由系统服务、网络配置或权限问题引起。

主要解决方案

1. 更新 WSL2 内核(最常用解决方案)

这是最常见且有效的解决方案,因为 Docker Desktop 依赖 WSL2 但有时不会自动安装或更新所需内核。

powershell
wsl --update
cmd
wsl --update

执行此命令后,重启 Docker Desktop 并等待 1-2 分钟让其完成初始化过程。

TIP

Docker Desktop v4.22+ 版本已改进此问题,会在首次运行时检测并提示需要更新 WSL 内核。

2. 重新注册 WSL 发行版

如果更新 WSL 无效,可以尝试重新注册 Docker 相关的 WSL 发行版:

powershell
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

执行后重新启动 Docker Desktop。注意:这会清除当前的 Docker 数据,但镜像和容器通常会保留。

3. 安装 Ubuntu WSL2 发行版

确保已安装一个 WSL2 Linux 发行版:

powershell
wsl --install -d Ubuntu

安装完成后,在 Ubuntu 中运行更新:

bash
sudo apt update && sudo apt upgrade

其他有效解决方案

4. 清理临时文件

删除系统临时文件可能解决某些冲突问题:

  1. C:\Windows\Temp
  2. C:\Users\{用户名}\AppData\Local\Temp
  3. C:\Windows\Prefetch

然后重新安装 Docker Desktop。

5. 检查 Trusted Installer 服务

某些情况下 Windows Trusted Installer Worker (TiWorker.exe) 可能导致问题:

  1. 打开任务管理器
  2. 在"进程"标签页中结束 TiWorker 进程
  3. 在"服务"标签页中重启 Trusted Installer 服务

6. 重启 LxssManager 服务

WSL 的核心服务可能出现卡死状态:

cmd
# 查询服务PID
sc queryex LxssManager

# 使用获取的PID终止进程(XXXXX替换为实际PID)
wmic process where ProcessID=XXXXX delete

# 重新启动服务
net start LxssManager

可能需要重复此过程多次才能生效。

7. 启用必要的 Windows 功能

确保以下功能已启用:

  1. Windows 功能对话框中启用:

    • Windows 子系统 for Linux
    • Windows Hypervisor Platform
    • 虚拟机平台
  2. BIOS/UEFI 中启用虚拟化支持(通常称为 SVM、Intel VT-x 或 AMD-V)

8. 以管理员身份运行

始终以管理员权限运行 Docker Desktop,这可以解决许多权限相关的问题。

预防措施

  1. 按顺序启动:确保 Docker Desktop 完全启动后再启动其他开发工具(如 VS Code、PyCharm)
  2. 检查环境变量:确保 PATH 中包含 C:\WINDOWS\system32
  3. 防火墙设置:允许 Docker 相关程序通过防火墙
  4. 定期更新:保持 Docker Desktop 和 WSL2 为最新版本

总结

Docker Desktop 在 Windows 上启动卡住的问题主要与 WSL2 相关。按照以下优先级尝试解决方案:

  1. 运行 wsl --update
  2. 重新注册 WSL 发行版
  3. 安装 Ubuntu WSL2 发行版
  4. 检查并重启相关服务

大多数情况下,前两种方法即可解决问题。如果问题依然存在,可以考虑完全卸载 Docker Desktop 和 WSL2 后重新安装。