适用于 Docker Desktop for Mac 的常见问题解答
为什么我一直收到通知,提示应用程序已更改我的 Desktop 配置?
您收到此通知是因为配置完整性检查功能检测到第三方应用程序已更改您的 Docker Desktop 配置。这通常是由于错误或缺少符号链接造成的。该通知确保您知道这些更改,以便您可以查看并修复任何潜在问题,以保持系统可靠性。
打开通知会弹出一个窗口,其中提供有关检测到的完整性问题的详细信息。
如果您选择忽略通知,则只有在下次启动 Docker Desktop 时才会再次显示。如果您选择修复您的配置,则不会再收到提示。
如果您想关闭配置完整性检查通知,请导航至 Docker Desktop 的设置,然后在“常规”选项卡中,清除“自动检查配置”设置。
如果您对如何进一步改进配置完整性检查功能有任何反馈,请填写反馈表单.
什么是 HyperKit?
HyperKit 是一个建立在 macOS 中 Hypervisor.framework 之上的 hypervisor。它完全在用户空间运行,没有任何其他依赖项。
我们使用 HyperKit 来消除对其他 VM 产品(如 Oracle VirtualBox 或 VMWare Fusion)的需求。
HyperKit 的优势是什么?
HyperKit 比 VirtualBox 和 VMWare fusion 更轻薄,并且包含的版本针对 Mac 上的 Docker 工作负载进行了定制。
为什么退出应用程序后,com.docker.vmnetd 仍在运行?
特权辅助进程 com.docker.vmnetd
由 launchd
启动并在后台运行。除非 Docker.app
连接到它,否则该进程不会消耗任何资源,因此您可以安全地忽略它。
Docker Desktop 在哪里存储 Linux 容器和镜像?
Docker Desktop 将 Linux 容器和镜像存储在 Mac 文件系统中的单个大型“磁盘镜像”文件中。这与 Linux 上的 Docker 不同,Docker 通常将容器和镜像存储在 /var/lib/docker
目录中。
磁盘镜像文件在哪里?
要查找磁盘镜像文件,请从 Docker 仪表板中选择“设置”,然后从“资源”选项卡中选择“高级”。
“高级”选项卡显示磁盘镜像的位置。它还显示磁盘镜像的最大尺寸和磁盘镜像实际占用的空间。请注意,其他工具可能会根据文件最大尺寸来显示文件空间使用情况,而不是实际文件尺寸。
如果文件太大怎么办?
如果磁盘镜像文件太大,您可以
- 将其移动到更大的驱动器
- 删除不必要的容器和镜像
- 减少文件的最大允许尺寸
如何将文件移动到更大的驱动器?
要将磁盘镜像文件移动到其他位置
选择“设置”,然后从“资源”选项卡中选择“高级”。
在“磁盘镜像位置”部分,选择“浏览”并为磁盘镜像选择一个新位置。
选择“应用并重启”以使更改生效。
重要
请勿直接在 Finder 中移动文件,因为这会导致 Docker Desktop 丢失文件的跟踪。
如何删除不必要的容器和镜像?
检查您是否有任何不必要的容器和镜像。如果您的客户端和守护程序 API 正在运行版本 1.25 或更高版本(使用客户端上的 docker version
命令检查您的客户端和守护程序 API 版本),则可以通过运行以下命令查看详细的空间使用信息
$ docker system df -v
或者,要列出镜像,请运行
$ docker image ls
要列出容器,请运行
$ docker container ls -a
如果有大量冗余对象,请运行以下命令
$ docker system prune
此命令会删除所有已停止的容器、未使用的网络、悬挂的镜像和构建缓存。
根据磁盘镜像文件的格式,在主机上回收空间可能需要几分钟。如果文件名为
Docker.raw
,主机上的空间将在几秒钟内回收。Docker.qcow2
,空间将在几分钟后由后台进程释放。
只有在删除镜像时才会释放空间。在运行中的容器中删除文件时,不会自动释放空间。要随时触发空间回收,请运行以下命令
$ docker run --privileged --pid=host docker/desktop-reclaim-space
请注意,许多工具报告的是文件最大尺寸,而不是实际文件尺寸。要从终端查询主机上文件的实际尺寸,请运行
$ cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
$ ls -klsh Docker.raw
2333548 -rw-r--r--@ 1 username staff 64G Dec 13 17:42 Docker.raw
在此示例中,磁盘的实际尺寸为 2333548
KB,而磁盘的最大尺寸为 64
GB。
如何减少文件的最大尺寸?
要减少磁盘镜像文件最大尺寸
选择“设置”,然后从“资源”选项卡中选择“高级”。
“磁盘镜像尺寸”部分包含一个滑块,允许您更改磁盘镜像的最大尺寸。调整滑块以设置较低的限制。
选择“应用并重启”。
当您减少最大尺寸时,当前的磁盘镜像文件将被删除,因此所有容器和镜像都将丢失。
如何添加 TLS 证书?
您可以将受信任的证书颁发机构 (CA)(用于验证注册表服务器证书)和客户端证书(用于对注册表进行身份验证)添加到 Docker 守护程序。
添加自定义 CA 证书(服务器端)
所有受信任的 CA(根 CA 或中间 CA)都受支持。Docker Desktop 基于 Mac Keychain 创建所有用户信任的 CA 的证书捆绑包,并将其附加到 Moby 受信任证书。因此,如果企业 SSL 证书受到主机上用户的信任,则它也会受到 Docker Desktop 的信任。
要手动添加自定义自签名证书,首先将其添加到 macOS 密钥链,然后由 Docker Desktop 获取。以下是一个示例
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt
或者,如果您希望将证书仅添加到您自己的本地密钥链(而不是所有用户),请改为运行以下命令
$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt
另请参阅证书的目录结构。
注意
您需要在对密钥链或
~/.docker/certs.d
目录进行任何更改后重启 Docker Desktop,以使更改生效。
有关如何执行此操作的完整说明,请参阅博客文章 将自签名注册表证书添加到 Docker 和 Docker Desktop for Mac.
添加客户端证书
您可以将客户端证书放在 ~/.docker/certs.d/<MyRegistry>:<Port>/client.cert
和 ~/.docker/certs.d/<MyRegistry>:<Port>/client.key
中。
当 Docker Desktop 应用程序启动时,它会将您 Mac 上的 ~/.docker/certs.d
文件夹复制到 Moby(Docker Desktop 的 xhyve
虚拟机)上的 /etc/docker/certs.d
目录中。
注意
您需要在对密钥链或
~/.docker/certs.d
目录进行任何更改后重启 Docker Desktop,以使更改生效。注册表不能列为不安全的注册表。Docker Desktop 会忽略列在不安全注册表下的证书,并且不会发送客户端证书。诸如
docker run
之类的尝试从注册表中提取的命令会在命令行以及注册表上产生错误消息。
证书的目录结构
如果您有此目录结构,则无需手动将 CA 证书添加到您的 Mac OS 系统登录中
/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
├── ca.crt
├── client.cert
└── client.key
以下内容进一步说明和解释了使用自定义证书的配置
/etc/docker/certs.d/ <-- Certificate directory
└── localhost:5000 <-- Hostname:port
├── client.cert <-- Client certificate
├── client.key <-- Client key
└── ca.crt <-- Certificate authority that signed
the registry certificate
只要 CA 证书也存在于您的钥匙串中,您也可以使用此目录结构。
/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
├── client.cert
└── client.key
要详细了解如何为注册表安装 CA 根证书以及如何设置用于验证的客户端 TLS 证书,请参阅 Docker 引擎主题中的 使用证书验证存储库客户端。