日志和故障排除

预计阅读时间:16分钟

您是否知道Docker桌面现在为订阅Pro或Team计划的开发人员提供支持?单击此处了解更多信息。

该页面包含有关如何诊断和排除Docker桌面问题,请求Docker桌面支持(仅限Pro和Team计划用户),发送日志并与Docker桌面团队进行通信,使用我们的论坛和成功中心,在GitHub上浏览和记录问题的信息,并找到已知问题的解决方法。

疑难排解

从菜单栏中选择鲸鱼菜单>故障排除,以查看故障排除选项。

对Docker桌面进行故障排除

疑难解答页面包含以下选项:

  • 重新启动Docker Desktop:选择以重新启动Docker Desktop。

  • 支持:Pro和Team计划的开发人员可以使用此选项发送支持请求。其他用户可以使用此选项来诊断Docker Desktop中的任何问题。有关更多信息,请参阅诊断和反馈以及支持

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

  • 清除/清除数据:此选项可重置所有Docker数据,而无需重置为出厂默认值。选择此选项将导致现有设置丢失。

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

  • 卸载:选择此选项可从系统中删除Docker Desktop。

从命令行卸载Docker Desktop

要从终端卸载Docker Desktop,请运行:<DockerforMacPath> --uninstall。如果您的实例安装在默认位置,此命令将提供干净的卸载:

$ /Applications/Docker.app/Contents/MacOS/Docker --uninstall
Docker is running, exiting...
Docker uninstalled successfully. You can move the Docker application to the trash.

例如,如果您发现该应用程序无法运行,并且无法从菜单中将其卸载,则可能要使用命令行卸载。

诊断和反馈

应用内诊断

如果遇到在本文档中找不到解决方案的问题,请访问GitHub上的Docker Desktop问题Docker Desktop论坛,我们可以帮助您对日志数据进行故障排除。报告问题之前,我们建议您阅读本页上提供的信息,以解决一些常见的已知问题。

笔记

Docker Desktop为订阅Pro或Team计划的用户提供支持。如果您在使用Docker Desktop时遇到任何问题,请按照本节中的说明将支持请求发送给Docker支持。

在开始之前,我们建议您登录Docker桌面应用程序和Docker Hub帐户。

  1. 选择鲸鱼菜单>疑难解答
  2. 登录Docker桌面。此外,请确保您已登录Docker帐户
  3. 点击获取支持。这将打开应用程序内支持页面,并开始收集诊断信息。 诊断与反馈
  4. 诊断收集过程完成后,单击上载以获取诊断ID
  5. 在上传诊断后,Docker Desktop将打印诊断ID。复制此ID。
  6. 如果您已订阅专业版或团队版计划,请点击联系支持。这将打开Docker Desktop支持表格。填写所需的信息,然后将您先前复制的ID添加到Diagnostics ID字段中。单击提交以请求Docker桌面支持。

    笔记

    您必须使用Pro或Team计划凭据登录Docker桌面才能访问支持表格。有关Docker Desktop支持的内容,请参阅Support

  7. 如果您尚未订阅Pro或团队计划,则可以单击“升级”以受益于Docker支持来升级您的现有帐户。或者,单击“报告错误”以在GitHub上打开一个新的Docker桌面问题。这会在Web浏览器中的“新问题”模板中在GitHub上打开Docker Desktop for Mac。完成所需的信息,并确保您添加了先前复制的诊断ID。单击提交新问题以创建新问题。

从终端诊断

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

首先,找到com.docker.diagnose工具。如果您已将Docker Desktop安装在Applications目录中,则位于 /Applications/Docker.app/Contents/MacOS/com.docker.diagnose

要创建和上传诊断,请运行:

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

诊断完成后,您应该具有以下输出,其中包含您的诊断ID:

Diagnostics Bundle: /tmp/B8CF8400-47B3-4068-ADA4-3BBDCE3985D9/20190726143610.zip
Diagnostics ID:     B8CF8400-47B3-4068-ADA4-3BBDCE3985D9/20190726143610 (uploaded)
Diagnostics Bundle: /tmp/BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051.zip
Diagnostics ID:     BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051 (uploaded)

诊断ID(此处为BE9AFAAF-F68B-41D0-9D12-84760E6B8740 / 20190905152051)由您的用户ID(BE9AFAAF-F68B-41D0-9D12-84760E6B8740)和时间戳(20190905152051)组成。确保提供完整的诊断ID,而不仅仅是用户ID。

要查看诊断文件的内容,请运行:

$ open /tmp/BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051.zip

查看日志

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

在航站楼

要在命令行中观看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提供了一个名为“ Console”的内置日志查看器,可用于检查Docker日志。

控制台位于/Applications/Utilities; 您可以使用Spotlight搜索进行搜索。

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

Mac Console搜索Docker应用

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

故障排除

确保证书设置正确

Docker Desktop会忽略不安全注册表中列出的证书,并且不会将客户端证书发送给它们。诸如此类的docker run尝试从注册表中拉出的命令在命令行上会产生错误消息,例如:

Error response from daemon: Get http://192.168.203.139:5858/v2/: malformed HTTP response "\x15\x03\x01\x00\x02\x02"

以及在注册表上。例如:

2019/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52882: tls: client didn't provide a certificate
2019/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52883: tls: first record does not look like a TLS handshake

有关使用客户端和服务器端证书的更多信息,请参阅 “入门”主题中的“添加TLS证书”。

卷挂载需要共享文件目录之外的任何项目目录 /Users

如果您正在使用已挂载的卷并且遇到运行时错误指示未找到应用程序文件,对卷挂载的访问被拒绝或服务无法启动(例如在使用Docker Compose时),则可能需要启用文件共享

卷挂载需要位于/Users目录外部的项目的共享驱动器 。转到鲸鱼菜单> 首选项>资源>文件共享,然后共享包含Dockerfile和卷的驱动器。

检测到不兼容的CPU

Docker Desktop需要一个处理器(CPU),该处理器支持虚拟化,尤其是Apple Hypervisor框架。Docker Desktop仅与具有支持Hypervisor框架的CPU的Mac系统兼容。如Apple Hypervisor Framework文档中有关受支持的硬件所述,大多数2010年以后制造的Mac都支持它。

通常,支持具有Intel VT-x功能集(包括扩展页表(EPT)和无限制模式)的计算机。

要检查您的Mac是否支持Hypervisor框架,请在终端窗口中运行以下命令。

sysctl kern.hv_support

如果您的Mac支持Hypervisor Framework,则命令显示 kern.hv_support: 1

如果不是,该命令将显示kern.hv_support: 0

另请参阅 《 Apple文档中的Hypervisor框架参考》以及Docker Desktop Mac系统要求

常见问题的解决方法

  • 如果Docker Desktop无法在Mac上正确安装或启动:

    • 在安装新版本的应用程序之前,请确保退出Docker Desktop(鲸鱼菜单>退出Docker Desktop)。否则,当您尝试将新的应用程序从复制得到一个“使用应用程序”的错误.dmg/Applications

    • 重新启动Mac,以停止/丢弃从先前安装的版本运行的守护程序的所有痕迹。

    • 从菜单中运行卸载命令。

  • 如果docker命令无法正常运行或未按预期运行,则可能需要取消设置某些环境变量,以确保您未在​​Shell或命令窗口中使用旧版Docker Machine环境。取消设置 DOCKER_HOST环境变量和相关变量。如果使用bash,请使用以下命令:unset ${!DOCKER_*}

  • 对于该hello-world-nginx示例,必须运行Docker Desktop才能访问上的Web服务器http://localhost/。确保在菜单栏上显示Docker图标,并确保在连接到Docker桌面引擎的shell中运行Docker命令。否则,您可能会启动Web服务器容器,但转到时会收到“网页不可用”错误localhost

  • 如果您看到类似Bind for 0.0.0.0:8080 failed: port is already allocated或的错误listen tcp:0.0.0.0:8080: bind: address is already in use

    • 这些错误通常是由Mac上使用这些端口的某些其他软件引起的。

    • 运行lsof -i tcp:8080以发现另一个进程的名称和pid,并确定是关闭另一个进程还是在docker应用中使用其他端口。

已知的问题

  • 使用virtualization.framework实验性功能时,会看到以下问题:

    • 某些VPN客户端可能会阻止运行Docker的VM与主机进行通信,从而阻止Docker Desktop正常启动。参见docker / for-mac#5208

      这是vmnet.frameworkvirtualization.framework在Big Sur中使用的)与VPN客户端之间的交互。

    • Docker Desktop与macOS Internet共享不兼容。参见docker / for-mac#5348

      这是vmnet.frameworkvirtualization.framework在Big Sur中使用的)和macOS Internet共享之间的交互。目前,无法同时使用Docker桌面和macOS Internet共享。

    • 某些容器磁盘I / O的速度比预期的要慢得多。参见docker / for-mac#5389。由于需要确保将数据写入主机上的稳定存储,因此磁盘刷新特别慢。

      这是virtualization.framework大苏尔地区新事物的产物。

    • Docker Desktop启动时,TCP和UDP端口53(DNS)绑定在主机上。因此,您不能使用像这样的命令将所有接口上的端口53绑定docker run -p 53:53。参见docker / for-mac#5335

      这是virtualization.framework大苏尔地区新事物的产物。解决方法是绑定到特定的IP地址,例如docker run -p 127.0.0.1:53:53

    • Linux内核有时可能会崩溃。Docker现在检测到此问题,并弹出一个错误对话框,为用户提供了快速重启Linux的能力。

      我们仍在收集数据并测试备用内核版本。

  • Docker桌面尚不支持IPv6。

  • docker-compose up与Docker Desktop(ValueError: Extra Data)结合使用时,您可能会遇到错误。我们已经确定这很可能与一次传递所有数据和/或事件有关,而不是一次一遍地传递,因此有时数据会随着2个以上的对象并置而返回并导致错误。

  • .dmg运行后强制弹出后Docker.app,可能会导致鲸鱼图标无响应,Docker任务在活动监视器中显示为未响应,并且某些进程会消耗大量CPU资源。重新启动并重新启动Docker以解决这些问题。

  • 即使在鲸鱼菜单> Preferences中启用了Docker,Docker也不会在登录时自动启动 。这与Docker帮助程序,注册和版本控制的一系列问题有关。

  • Docker DesktopHyperKit在macOS 10.10 Yosemite及更高版本中使用了管理程序(https://github.com/docker/hyperkit)。如果您正在使用与之发生冲突的工具HyperKit(例如 英特尔硬件加速执行管理器(HAXM))进行开发,则当前的解决方法是不要同时运行它们。您可以HyperKit在使用HAXM时暂时退出Docker Desktop来暂停 。这使您可以继续使用其他工具并防止HyperKit 干扰。

  • 如果您正在使用的应用程序一样工作的Apache Maven的意想不到的设置DOCKER_HOSTDOCKER_CERT_PATH环境变量,指定这些通过Unix套接字连接到码头工人的情况。例如:

    export DOCKER_HOST=unix:///var/run/docker.sock
    
  • 绑定安装到容器中的目录的性能存在许多问题。特别是,小块的写操作和大目录的遍历当前很慢。此外,执行大量目录操作(例如对大型目录树的重复扫描)的容器可能会遇到性能不佳的问题。以这种方式运行的应用程序包括:

    • rake
    • ember build
    • Symfony
    • Magento
    • Zend框架
    • 使用Composervendor文件夹中安装依赖项的PHP应用程序

    作为解决此问题的方法,您可以将供应商或第三方库目录放入Docker卷中,在绑定安装之外执行临时文件系统操作,并使用Unison等第三方工具,或rsync在容器目录和绑定安装目录之间进行同步。我们正在积极使用多种不同的技术来提高性能。要了解更多信息,请参阅路线图上主题

支持

Docker Desktop为订阅Pro或Team计划的开发人员提供支持。单击此处升级您的现有帐户。

本节包含有关如何获得支持的说明,并涵盖了Docker Desktop支持的范围。

如何获得Docker桌面支持?

如果您已经订阅了Pro and Team帐户,请通过Docker Desktop support提出票证。

Docker社区用户可以通过我们的Github re-for和for-mac获得支持,我们会尽力而为。

我可以得到什么支持?

如果您是Pro或Team用户,则可以请求以下类型的问题的支持:

  • 桌面升级问题
  • 桌面安装问题
    • 安装崩溃
    • 首次运行时未能启动Docker桌面
  • 使用问题
    • 崩溃关闭软件
    • Docker桌面行为异常
  • 配置问题
  • 基本产品“如何做”的问题

不支持什么?

Docker Desktop排除了对以下类型问题的支持:

  • 在适用文档中未指定的硬件或软件上或与之结合使用
  • 在不受支持的操作系统(包括Beta /预览版操作系统)上运行
  • 使用仿真运行其他体系结构的容器
  • 支持Docker引擎,Docker CLI或其他捆绑的Linux组件
  • 对Kubernetes的支持
  • 标为实验性的功能
  • 系统/服务器管理活动
  • 支持桌面作为生产运行时
  • 大规模部署/多机安装桌面
  • 日常产品维护(数据备份,清理磁盘空间和配置日志轮换)
  • Docker未提供的第三方应用程序
  • 更改或修改的Docker软件
  • 由于硬件故障,滥用或使用不当而导致Docker软件出现缺陷
  • 除最新版本外的任何版本的Docker软件
  • Docker未提供的第三方服务的报销和支出
  • Docker支持不包括培训,定制和集成

支持哪些版本?

当前,我们仅提供对最新版本的Docker Desktop的支持。如果您运行的是旧版本,在我们调查您的支持请求之前,可能会要求您进行升级。

我可以在几台计算机上获得对Docker Desktop的支持?

作为Pro用户,您可以在一台机器上获得对Docker Desktop的支持。作为一个团队,作为计划的一部分,您可以获得对Docker Desktop的支持,即机器数量等于席位数量。

支持什么操作系统?

Docker Desktop适用于Mac和Windows。可以在以下页面上找到受支持的版本信息:

我可以在虚拟化硬件上运行Docker Desktop吗?

否,目前不支持此功能,并且违反了使用条款。

mac故障排除日志问题