已知问题
- 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_HOST和DOCKER_CERT_PATH环境变量,以通过Unix套接字连接Docker实例,请按以下方式指定这些变量。例如:$ export DOCKER_HOST=unix:///var/run/docker.sock将目录绑定挂载到容器中时,存在一些性能问题。特别是,对小块数据的写入操作以及对大型目录的遍历操作目前较慢。此外,执行大量目录操作的容器(例如反复扫描大型目录树的应用)可能会出现性能不佳的情况。此类行为的应用包括:
rakeember build- Symfony
- Magento
- Zend 框架
- 使用
Composer 安装依赖项的 PHP 应用程序,依赖项位于
vendor文件夹中
作为此行为的变通方法,您可以将供应商或第三方库目录置于 Docker 卷中,将临时文件系统操作置于绑定挂载之外执行,并使用第三方工具(如 Unison 或
rsync)在容器目录与绑定挂载目录之间进行同步。我们正在积极采用多种技术手段推进性能改进。欲了解更多信息,请参阅我们路线图中的相关主题。
在 Apple Silicon 原生
arm64容器中,旧版本的libssl(例如debian:buster、ubuntu:20.04和centos:8)在连接某些 TLS 服务器(例如curl https://dl.yarnpkg.com)时会发生段错误(segfault)。该问题已在debian:bullseye、ubuntu:21.04和fedora:35中的新版libssl中修复。某些命令行工具在未安装 Rosetta 2 时无法正常工作。
- 旧版本 1.x 的
docker-compose。请改用 Compose V2——输入docker compose。 docker-credential-ecr-login凭证助手。
- 旧版本 1.x 的
某些镜像不支持 ARM64 架构。您可以在运行(或构建)时添加
--platform linux/amd64,以通过模拟方式运行 Intel 架构的镜像。然而,在模拟环境下于苹果硅基(Apple Silicon)设备上运行基于 Intel 架构的容器时,可能会因 QEMU 有时无法正常运行容器而发生崩溃。此外,文件系统变更通知 API(
inotify)在 QEMU 模拟环境下无法正常工作。即使容器在模拟环境下能够正常运行,其性能也会比原生容器更慢,并消耗更多内存。总之,在基于 Arm 的机器上运行基于 Intel 的容器,仅应视为“尽力而为”(best effort)的方案。我们建议在 Apple Silicon 机器上尽可能运行 arm64 架构的容器,并鼓励容器作者为其容器构建 arm64 或多架构(multi-arch)版本。随着越来越多镜像被重新构建,此类问题将随着时间推移而逐渐减少。 支持多架构。
ping从容器内部访问互联网时,无法按预期工作。要测试网络,请使用curl或wget。参见 docker/for-mac#5322。用户在TCP流处于半关闭状态时,可能会偶尔遇到数据丢失的情况。