故障排查 Docker Desktop

本页面包含有关如何诊断和排查 Docker Desktop 问题,以及如何检查日志的信息。

故障排除菜单

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

  • 选择 Docker 菜单 Docker 菜单whale menuand then故障排查.
  • 选择 Docker 仪表板右上角附近的 故障排除 图标。

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

  • 重启 Docker Desktop

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

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

  • 重置为出厂默认设置:选择此选项可将 Docker Desktop 的所有选项重置为其初始状态,即与 Docker Desktop 首次安装时的状态相同。

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

提示

如果您需要联系支持团队,请在 Docker 仪表板右上角附近选择问号图标,然后选择联系支持。持有付费 Docker 订阅的用户可通过此选项提交支持请求。

诊断

提示

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

从应用程序进行诊断

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

      注意

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

    • 如果您没有付费的Docker订阅,请选择报告错误,在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 上创建一个问题(Issue):

自我诊断工具

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" check
    
  1. 定位 com.docker.diagnose 工具。

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

    $ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose check
    
  1. 定位 com.docker.diagnose 工具。

  2. 运行自诊断工具:

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

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

您随后可以在 GitHub 上创建一个 issue:

检查日志

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


在 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

从控制台应用

Mac 提供了一个内置的日志查看器,名为 控制台,可用于检查 Docker 日志。

控制台位于 /Applications/Utilities。您可以使用 Spotlight 搜索( Spotlight Search)来查找它。

要读取 Docker 应用程序的日志消息,请在控制台窗口的搜索栏中输入 docker 并按回车键。然后选择 ANY 以展开位于您的 docker 搜索条目旁的下拉列表,并选择 Process

Mac Console search for Docker app

您可以使用控制台日志查询来搜索日志、以多种方式筛选结果,并生成报告。

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

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

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


查看 Docker 守护进程日志

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

更多资源