Docker Desktop 故障排除

本页包含关于如何诊断和排除 Docker Desktop 故障,以及如何检查日志的信息。

警告

如果您在 Mac 上遇到恶意软件检测问题,请按照 docker/for-mac#7527 中记录的步骤操作。

故障排除菜单

要导航到故障排除,请执行以下任一操作:

  • 选择 Docker 菜单 Docker menu whale menu,然后选择故障排除
  • 选择 Docker Dashboard 右上角的故障排除图标。

故障排除菜单包含以下选项:

  • 重新启动 Docker Desktop.

  • 重置 Kubernetes 集群。选择此选项将删除所有堆栈和 Kubernetes 资源。有关更多信息,请参阅Kubernetes

  • 清理 / 清除数据。此选项将重置所有 Docker 数据,但不会恢复到出厂默认设置。选择此选项将导致丢失现有设置。

  • 恢复到出厂默认设置:选择此选项可将 Docker Desktop 上的所有选项重置为初始状态,就像 Docker Desktop 首次安装时一样。

如果您是 Mac 或 Linux 用户,您还可以选择从系统中卸载 Docker Desktop。

诊断

提示

如果在故障排除中找不到解决方案,请浏览 GitHub 仓库或创建新问题:

从应用进行诊断

  1. 故障排除中,选择获取支持。这将打开应用内支持页面并开始收集诊断信息。
  2. 诊断信息收集完成后,选择上传以获取诊断 ID
  3. 诊断信息上传后,Docker Desktop 会打印一个诊断 ID。复制此 ID。
  4. 使用您的诊断 ID 获取帮助
    • 如果您拥有付费 Docker 订阅,请选择联系支持。这将打开 Docker Desktop 支持表单。填写所需信息,并将您在步骤三中复制的 ID 添加到诊断 ID 字段。然后,选择提交工单以申请 Docker Desktop 支持。

      注意

      您必须登录 Docker Desktop 才能访问支持表单。有关 Docker Desktop 支持涵盖内容的详细信息,请参阅支持

    • 如果您没有付费 Docker 订阅,请选择报告 Bug 以在 GitHub 上创建新的 Docker Desktop 问题。填写所需信息,并确保添加您在步骤三中复制的诊断 ID。

从错误消息进行诊断

  1. 当出现错误消息时,选择收集诊断信息
  2. 诊断信息上传后,Docker Desktop 会打印一个诊断 ID。复制此 ID。
  3. 使用您的诊断 ID 获取帮助
    • 如果您拥有付费 Docker 订阅,请选择联系支持。这将打开 Docker Desktop 支持表单。填写所需信息,并将您在步骤三中复制的 ID 添加到诊断 ID 字段。然后,选择提交工单以申请 Docker Desktop 支持。

      注意

      您必须登录 Docker Desktop 才能访问支持表单。有关 Docker Desktop 支持涵盖内容的详细信息,请参阅支持

    • 如果您没有付费 Docker 订阅,可以在 GitHub 上为 MacWindowsLinux 创建新的 Docker Desktop 问题。填写所需信息,并确保添加在步骤二中打印的诊断 ID。

从终端进行诊断

在某些情况下,自己运行诊断工具会很有用,例如当 Docker Desktop 无法启动时。


  1. 找到 com.docker.diagnose 工具

    $ C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe
    
  2. 创建并上传诊断 ID。在 PowerShell 中,运行

    $ & "C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe" gather -upload
    

诊断完成后,终端将显示您的诊断 ID 和诊断文件的路径。诊断 ID 由您的用户 ID 和时间戳组成。例如 BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051

  1. 找到 com.docker.diagnose 工具

    $ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose
    
  2. 创建并上传诊断 ID。运行

    $ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose gather -upload
    

诊断完成后,终端将显示您的诊断 ID 和诊断文件的路径。诊断 ID 由您的用户 ID 和时间戳组成。例如 BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051

  1. 找到 com.docker.diagnose 工具

    $ /opt/docker-desktop/bin/com.docker.diagnose
    
  2. 创建并上传诊断 ID。运行

    $ /opt/docker-desktop/bin/com.docker.diagnose gather -upload
    

诊断完成后,终端将显示您的诊断 ID 和诊断文件的路径。诊断 ID 由您的用户 ID 和时间戳组成。例如 BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051


要查看诊断文件的内容


  1. 解压文件。在 PowerShell 中,将诊断文件路径复制并粘贴到以下命令中,然后运行。它应类似于以下示例:

    $ Expand-Archive -LiteralPath "C:\Users\testUser\AppData\Local\Temp\5DE9978A-3848-429E-8776-950FC869186F\20230607101602.zip" -DestinationPath "C:\Users\testuser\AppData\Local\Temp\5DE9978A-3848-429E-8776-950FC869186F\20230607101602"
  2. 在您首选的文本编辑器中打开文件。运行

    $ code <path-to-file>

运行

$ open /tmp/<your-diagnostics-ID>.zip

运行

$ unzip –l /tmp/<your-diagnostics-ID>.zip

使用您的诊断 ID 获取帮助

如果您拥有付费 Docker 订阅,请选择联系支持。这将打开 Docker Desktop 支持表单。填写所需信息,并将您在步骤三中复制的 ID 添加到诊断 ID 字段。然后,选择提交工单以申请 Docker Desktop 支持。

如果您没有付费 Docker 订阅,请在 GitHub 上创建问题

自诊断工具

Docker Desktop 包含一个自诊断工具,可帮助您识别一些常见问题。


  1. 找到 com.docker.diagnose 工具。

    $ C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe
    
  2. 在 PowerShell 中,运行自诊断工具

    $ & "C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe" gather
    
  1. 找到 com.docker.diagnose 工具。

    $ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose
    
  2. 运行自诊断工具

    $ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose gather
    
  1. 找到 com.docker.diagnose 工具。

  2. 运行自诊断工具

    $ /opt/docker-desktop/bin/com.docker.diagnose gather
    

该工具运行一系列检查,并在每次检查旁边显示通过失败。如果存在任何失败,报告末尾会重点突出最相关的项。

然后您可以在 GitHub 上创建问题

检查日志

除了使用诊断选项提交日志外,您还可以自己浏览日志。


在 PowerShell 中,运行

$ code $Env:LOCALAPPDATA\Docker\log

这将在您首选的文本编辑器中打开所有日志供您查阅。

从终端

要在命令行中查看 Docker Desktop 日志的实时流,请在您首选的 Shell 中运行以下脚本。

$ pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
$ /usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

或者,要将最后一天的日志 (1d) 收集到文件中,请运行

$ /usr/bin/log show --debug --info --style syslog --last 1d --predicate "$pred" >/tmp/logs.txt

从 Console 应用

Mac 提供一个内置的日志查看器,名为 Console,您可以使用它来检查 Docker 日志。

Console 位于 /Applications/Utilities 中。您可以使用 Spotlight Search 搜索它。

要阅读 Docker 应用日志消息,请在 Console 窗口搜索栏中输入 docker 并按 Enter 键。然后选择 ANY 以展开 docker 搜索条目旁边的下拉列表,并选择 Process

Mac Console search for Docker app

您可以使用 Console 日志查询来搜索日志,以各种方式过滤结果并创建报告。

您可以通过运行以下命令访问 Docker Desktop 日志:

$ journalctl --user --unit=docker-desktop

您还可以在 $HOME/.docker/desktop/log/ 找到 Docker Desktop 中包含的内部组件的日志。


查看 Docker 守护进程日志

请参阅阅读守护进程日志部分,了解如何查看 Docker Daemon 日志。

更多资源

页面选项