已知问题
- Docker Desktop 暂不支持 IPv6。
Mac 活动监视器报告 Docker 使用的内存是其实际使用量的两倍。这是由于 macOS 中的一个错误。我们已就此撰写详细报告。
运行 `.dmg` 文件中的 `Docker.app` 后强制弹出 `.dmg` 文件可能会导致鲸鱼图标无响应,Docker 任务在活动监视器中显示为无响应,以及某些进程消耗大量 CPU 资源。重新启动计算机并重新启动 Docker 以解决这些问题。
即使在**设置**中启用了 Docker,它在登录后也不会自动启动。这与 Docker 辅助程序、注册和版本控制的一系列问题有关。
Docker Desktop 在 macOS 10.10 Yosemite 及更高版本中使用 `HyperKit` 虚拟机(https://github.com/docker/hyperkit)。如果您正在使用与 `HyperKit` 冲突的工具,例如英特尔硬件加速执行管理器 (HAXM),当前的解决方法是不要同时运行它们。您可以通过暂时退出 Docker Desktop 来暂停 `HyperKit`,同时使用 HAXM。这允许您继续使用其他工具并防止 `HyperKit` 干扰。
如果您正在使用诸如Apache Maven之类的应用程序,这些应用程序需要 `DOCKER_HOST` 和 `DOCKER_CERT_PATH` 环境变量的设置,请指定这些变量以通过 Unix 套接字连接到 Docker 实例。例如
$ export DOCKER_HOST=unix:///var/run/docker.sock
绑定安装到容器中的目录的性能存在许多问题。特别是,写入小块和遍历大型目录目前速度很慢。此外,执行大量目录操作(例如重复扫描大型目录树)的容器可能会出现性能低下。表现出这种行为的应用程序包括:
rake
ember build
- Symfony
- Magento
- Zend Framework
- 使用Composer在 `vendor` 文件夹中安装依赖项的 PHP 应用程序
作为此问题的变通方案,您可以将供应商或第三方库目录放入 Docker 卷中,在绑定挂载之外执行临时文件系统操作,并使用 Unison 或
rsync
等第三方工具在容器目录和绑定挂载目录之间进行同步。我们正在积极使用多种不同的技术来改进性能。要了解更多信息,请参阅我们路线图上的主题。
在原生
arm64
容器的Apple硅芯片上,旧版本的libssl
(例如debian:buster
、ubuntu:20.04
和centos:8
)在连接到某些TLS服务器(例如curl https://dl.yarnpkg.com
)时会发生段错误。此错误已在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硅芯片机器上使用模拟运行基于Intel的容器可能会崩溃,因为qemu有时无法运行容器。此外,文件系统更改通知API(
inotify
)在qemu模拟下不起作用。即使容器在模拟下正确运行,它们也会比原生等效容器更慢,并使用更多内存。总而言之,在基于Arm的机器上运行基于Intel的容器只能被视为“尽力而为”。我们建议尽可能在Apple硅芯片机器上运行arm64容器,并鼓励容器作者制作arm64或多架构版本的容器。随着越来越多的镜像被重新构建以支持多种架构,这个问题应该会随着时间的推移而变得越来越少。
从容器内部到互联网的
ping
命令无法按预期工作。要测试网络,请使用curl
或wget
。请参阅docker/for-mac#5322。当TCP流半关闭时,用户可能会偶尔遇到数据丢失。