我们如何从 GCR 中收集旧的 Docker 镜像?

我们如何从 GCR 中收集旧的 Docker 镜像?

由于奇怪的历史原因,我们在存储 Google Container Registry (GCR) 的 docker 镜像的 GCS 存储桶中拥有 2.14Tb 的数据。

我们曾经gcloud container images delete <image>删除过数千张未使用的图像,但 stackdriver 表示存储在底层 GCS 存储桶中的总字节数没有变化。

看起来好像gcloud container images delete已经从注册表中删除了图像元数据,但没有删除底层。

有没有办法我们可以从 GCS 中收集未使用的数据并减少每月的账单?

接受答案后更新

下面是我们 GCS 存储桶中对象总大小的图表 - 看起来对象大约每 24 小时收集一次垃圾(在我们的例子中是 UTC 中午左右)

在此处输入图片描述

答案1

不特定于 GCR - 在“普通”注册表(来自 docker)中,删除图像只会删除元数据,基本上是“取消标记”内容。需要额外的垃圾收集。这就是它在 harbor 和 gitlab 中的 docker 注册表中的工作方式。

我对这种情况发生的原因的解释是:一些较低的层可能可以立即重用,而删除一些引用它的图像并不一定意味着你再也不想看到它们。因此,它们会一直保留,直到明确调用 GC(或安排 GC 发生)。

相关内容