直接右键点击任务栏右下角Docker鲸鱼图标→选择Troubleshoot→Get support,即可触发诊断报告生成,自动打包引擎状态、WSL信息、配置摘要、事件日志及磁盘校验等5类核心数据并获取Diagnostic ID。

怎么触发 Docker Desktop 自带的诊断报告
直接右键点击任务栏右下角的 Docker 鲸鱼图标,选择 Troubleshoot → Get support,就能生成并打开诊断页面。这个操作会自动打包当前运行状态、日志片段、WSL 集成状态、Docker Engine 健康度等核心信息,生成一个唯一的 Diagnostic ID(形如 ABC123-DEF456),并跳转到 Docker 官方支持页。
注意:这个过程不依赖你是否能打开主界面——只要 Docker Desktop Service 进程在后台运行(哪怕托盘图标没显示),Troubleshoot 就大概率能进得去。如果右键菜单里压根没有 Troubleshoot,说明服务根本没起来,要先查 services.msc 里 Docker Desktop Service 是否处于 Running 状态。
诊断报告里实际包含哪些关键数据
它不是简单地 dump 日志,而是按模块聚合了 5 类上下文:
-
docker info和docker version的实时输出(验证引擎连通性) - WSL 发行版列表与状态(
wsl -l -v结果,看Ubuntu是Running还是Stopped) -
~/.docker/config.json的结构化摘要(排除认证/上下文配置错乱) - 最近 10 分钟内
Docker Desktop Service的 Windows 事件日志(含0x80070570或START_PENDING这类错误的原始时间戳和调用栈) - WSL2 虚拟磁盘
ext4.vhdx的元数据校验结果(判断是否文件损坏)
这些内容全部压缩为一个 .zip 包,大小通常在 2–8 MB。如果你手动执行 docker info 却报错,而诊断报告里却显示 “Engine OK”,那基本可以断定是 CLI 配置或 PATH 问题,不是引擎本身挂了。
为什么有时候点 Get support 没反应或卡住
常见原因有三个,且都跟本地环境有关:
- Windows Defender 或第三方杀软把
DockerDesktop.exe的诊断子进程当成可疑行为拦截了(临时禁用实时防护再试) -
%LOCALAPPDATA%\Docker\目录权限异常,导致诊断工具无法写入临时 zip(用管理员 PowerShell 运行:icacls "$env:LOCALAPPDATA\Docker" /reset /T) - WSL2 实例卡死,
wsl --list --verbose返回超时,诊断流程会等 30 秒后放弃(此时先执行wsl --shutdown再重试)
特别注意:Get support 不会上传任何镜像、容器数据或你自己的源码——它只采集元数据和日志路径,但如果你启用了 Send usage data(默认勾选),诊断包里会包含匿名化的功能使用统计,可进 Settings → General 关掉。
没 GUI 怎么手动收诊断信息
当 Docker Desktop 根本启动不了、托盘图标都不出现时,可以用命令行补位:
以管理员身份打开 PowerShell,依次执行:
wsl --shutdown
Get-Service "Docker Desktop Service" | Restart-Service -Force
docker info 2>&1 | Out-File "$env:TEMP\docker-info.log"
wsl -l -v > "$env:TEMP\wsl-list.log"
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='Docker Desktop'; StartTime=(Get-Date).AddMinutes(-10)} | Export-Csv "$env:TEMP\docker-events.csv"
这四步覆盖了诊断报告最核心的四个维度:强制刷新 WSL、重启服务、采集引擎状态、拉取最近 10 分钟 Windows 应用日志。生成的三个文件加起来不到 1 MB,足够给同事或支持团队做初步判断。唯一缺失的是 config.json 结构分析,但你可以手动检查 $env:USERPROFILE\.docker\config.json 是否存在且 JSON 格式合法(用 VS Code 打开即可验证)。
真正难搞的不是生成报告,而是报告里反复出现 ERROR_FILE_CORRUPT 或 ext4.vhdx is inaccessible ——这时候就得进 WSL 文件系统底层修磁盘,不是改配置能解决的。


















