已知问题



  • Docker Desktop 尚不支持 IPv6。
  • Mac 活动监视器报告 Docker 使用的内存是实际使用量的两倍。这是由于 macOS 中存在一个 Bug。我们已撰写 一份详细报告

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

  • 即使已在设置中启用了Docker,它在登录后也不会自动启动。这是由于Docker辅助程序、注册及版本管理相关的一系列问题所致。

  • Docker Desktop 在 macOS 10.10 Yosemite 及更高版本中使用 HyperKit 虚拟机监控程序( https://github.com/docker/hyperkit)。如果您使用与 HyperKit 存在冲突的工具,例如 Intel 硬件加速执行管理器(HAXM), 当前的解决方案是避免同时运行它们。您可以在使用 HAXM 期间暂时退出 Docker Desktop 来暂停 HyperKit。这样您就能继续使用其他工具,并防止 HyperKit 产生干扰。

  • 如果您正在使用类似 Apache Maven的应用程序,且这些应用程序需要配置DOCKER_HOSTDOCKER_CERT_PATH环境变量,以通过Unix套接字连接Docker实例,请按以下方式指定这些变量。例如:

    $ export DOCKER_HOST=unix:///var/run/docker.sock
    
  • 将目录绑定挂载到容器中时,存在一些性能问题。特别是,对小块数据的写入操作以及对大型目录的遍历操作目前较慢。此外,执行大量目录操作的容器(例如反复扫描大型目录树的应用)可能会出现性能不佳的情况。此类行为的应用包括:

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

    作为此行为的变通方法,您可以将供应商或第三方库目录置于 Docker 卷中,将临时文件系统操作置于绑定挂载之外执行,并使用第三方工具(如 Unison 或 rsync)在容器目录与绑定挂载目录之间进行同步。我们正在积极采用多种技术手段推进性能改进。欲了解更多信息,请参阅我们路线图中的相关主题

  • 在 Apple Silicon 原生 arm64 容器中,旧版本的 libssl(例如 debian:busterubuntu:20.04centos:8)在连接某些 TLS 服务器(例如 curl https://dl.yarnpkg.com)时会发生段错误(segfault)。该问题已在 debian:bullseyeubuntu:21.04fedora:35 中的新版 libssl 中修复。

  • 某些命令行工具在未安装 Rosetta 2 时无法正常工作。

    • 旧版本 1.x 的 docker-compose。请改用 Compose V2——输入 docker compose
    • docker-credential-ecr-login 凭证助手。
  • 某些镜像不支持 ARM64 架构。您可以在运行(或构建)时添加 --platform linux/amd64,以通过模拟方式运行 Intel 架构的镜像。

    然而,在模拟环境下于苹果硅基(Apple Silicon)设备上运行基于 Intel 架构的容器时,可能会因 QEMU 有时无法正常运行容器而发生崩溃。此外,文件系统变更通知 API(inotify)在 QEMU 模拟环境下无法正常工作。即使容器在模拟环境下能够正常运行,其性能也会比原生容器更慢,并消耗更多内存。

    总之,在基于 Arm 的机器上运行基于 Intel 的容器,仅应视为“尽力而为”(best effort)的方案。我们建议在 Apple Silicon 机器上尽可能运行 arm64 架构的容器,并鼓励容器作者为其容器构建 arm64 或多架构(multi-arch)版本。随着越来越多镜像被重新构建,此类问题将随着时间推移而逐渐减少。 支持多架构

  • ping 从容器内部访问互联网时,无法按预期工作。要测试网络,请使用 curlwget。参见 docker/for-mac#5322

  • 用户在TCP流处于半关闭状态时,可能会偶尔遇到数据丢失的情况。