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

Cyr*_*ris 4 macos diskspace docker

在构建 docker 镜像时,我经常遇到磁盘空间问题(例如 JS 错误"ENOSPC: no space left on device)。我习惯于跑步docker system prune来清理一些空间,但这对我来说有点太频繁了,我意识到也许有些东西没有按预期工作

运行后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
Run Code Online (Sandbox Code Playgroud)

看起来仍然有 42GB 的磁盘空间被镜像使用(或者这是否指的是 docker 的某种“保留空间”?无论如何,如果这 42GB 以某种方式保留下来,它可以很好地解释为什么我的磁盘变得如此满,所以经常

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

磁盘映像大小:120 GB(已使用 81.3 GB)

我错过了什么吗?

Noa*_*eli 6

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

<none> <none>

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

docker system prune -a

如该命令的帮助菜单中所述

-a, --all 删除所有未使用的图像,而不仅仅是悬空的图像

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

docker images prune -a