Docker 系统修剪留下大量 (42GB) 图像数据

Docker system prune leaves a lot (42GB) of image data

我在构建 docker 图像时经常 运行 进入磁盘 space 问题(如 JS 错误 "ENOSPC: no space left on device)。我已经习惯了 运行 docker system prune 来清理一些 space,但我觉得这有点太频繁了,我意识到可能有些地方没有按预期工作

在 运行 宁 docker system prune 我有以下 docker system df 输出

> docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          102       0         41.95GB   41.95GB (100%)
Containers      0         0         0B        0B
Local Volumes   53        0         5.254GB   5.254GB (100%)
Build Cache     383       0         0B        0B

似乎还有 42GB 磁盘 space 被图像使用(或者这是否指的是 docker 的某种“保留 space”?无论如何,如果这 42GB 是不知何故,它可以很好地解释为什么我的磁盘经常变得如此满

我在 macOS 上使用上述 docker system df,当我打开我的 docker 应用 > 我看到的资源时

Disk image size: 120 GB (81.3 GB used)

我是不是漏掉了什么?

正如@Oo.oO 在他的评论中提到的那样,您可能拥有不被视为“悬挂”的图像,但您仍然没有将它们用于任何用途或没有使用它们的容器,如 [=14= 中所述] 解释悬空图像和未使用图像之间区别的答案是,悬空图像显然是放置同一图像的先前版本,现在可能显示为:

<none> <none>

虽然未使用的图像只是未使用的图像,但不属于“悬空”分类,这就是您的图像未被删除的原因。那时 运行 以下命令将解决问题:

docker system prune -a

如命令的帮助菜单中所述

-a, --all Remove all unused images not just dangling ones

尽管如果您只想删除未使用的 图像 (因为这是您的主要用例),您可以改用以下命令:

docker images prune -a