已知问题
Mac 活动监视器报告 Docker 使用的内存量是实际使用量的两倍。这是由于 [macOS 中的一个 bug] (https://docs.google.com/document/d/17ZiQC1Tp9iH320K-uqVLyiJmk4DHJ3c4zgQetJiKYQM/edit?usp=sharing) 导致的。
从 .dmg 运行 Docker.app 后强制弹出它可能会导致鲸鱼图标无响应、Docker 任务在活动监视器中显示为无响应,以及某些进程消耗大量 CPU 资源。重启并重新启动 Docker 可以解决这些问题。
Docker Desktop 在 macOS 10.10 Yosemite 及更高版本中使用 HyperKit 虚拟机监控程序 (https://github.com/docker/hyperkit) 。如果您使用与 HyperKit 存在冲突的工具进行开发,例如 Intel Hardware Accelerated Execution Manager (HAXM),当前的解决方法是不同时运行它们。您可以在使用 HAXM 时暂时退出 Docker Desktop 来暂停 HyperKit。这允许您继续使用其他工具并防止 HyperKit 干扰。
如果您正在使用像 Apache Maven 这样需要设置 DOCKER_HOST 和 DOCKER_CERT_PATH 环境变量来通过 Unix 套接字连接到 Docker 实例的应用程序,请指定这些变量。例如
$ export DOCKER_HOST=unix:///var/run/docker.sock
当未安装 Rosetta 2 时,某些命令行工具无法工作。
- 旧版本的 docker-compose 1.x。请改用 Compose V2 - 输入 docker compose。
- docker-credential-ecr-login 凭证助手。
某些镜像不支持 ARM64 架构。您可以添加 --platform linux/amd64 来使用仿真运行(或构建)Intel 镜像。
然而,在 Apple silicon 机器上尝试通过仿真运行基于 Intel 的容器可能会崩溃,因为 QEMU 有时无法运行容器。此外,文件系统更改通知 API (inotify) 在 QEMU 仿真下无法工作。即使容器在仿真下可以正常运行,它们也会比原生等效容器慢且使用更多内存。
总而言之,在基于 Arm 的机器上运行基于 Intel 的容器只能视为“尽力而为”。我们建议尽可能在 Apple silicon 机器上运行 arm64 容器,并鼓励容器作者制作其容器的 arm64 或多架构版本。随着越来越多的镜像被重构以支持多种架构,这个问题会随着时间推移变得越来越少见。
当 TCP 流半关闭时,用户偶尔会遇到数据丢失。