Mac版Docker中的磁盘利用率

预计阅读时间:3分钟

Docker Desktop将Linux容器和映像存储在Mac文件系统中的单个大型“磁盘映像”文件中。这与Linux上的Docker不同,后者通常将容器和图像存储在/var/lib/docker目录中。

磁盘映像文件在哪里?

要找到磁盘映像文件,请选择Docker图标,然后 选择首选项>资源>高级

磁盘首选项

高级”选项卡显示磁盘映像的位置。它还显示磁盘映像的最大大小和磁盘映像消耗的实际空间。请注意,其他工具可能会以最大文件大小而非实际文件大小显示文件的空间使用情况。

如果文件太大

如果磁盘映像文件太大,则可以:

  • 将其移至更大的驱动器,
  • 删除不必要的容器和图像,或者
  • 减少文件的最大允许大小。

将文件移到更大的驱动器

要将磁盘映像文件移动到其他位置:

  1. 选择首选项>资源>高级

  2. 在“磁盘映像位置”部分中,单击“浏览”,然后为磁盘映像选择一个新位置。

  3. 单击“应用并重新启动”以使更改生效。

不要直接在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
$ cd vms/0/data
$ ls -klsh Docker.raw
2333548 -rw-r--r--@ 1 username  staff    64G Dec 13 17:42 Docker.raw

在此示例中,磁盘的实际大小为2333548KB,而磁盘的最大大小为64GB。

减小文件的最大大小

要减少磁盘映像文件的最大大小:

  1. 选择Docker图标,然后选择首选项>资源>高级

  2. 磁盘映像大小”部分包含一个滑块,可用于更改磁盘映像的最大大小。调整滑块以设置下限。

  3. 单击“应用并重新启动”

当减小最大大小时,当前磁盘映像文件将被删除,因此,所有容器和映像都将丢失。

MAC