Docker

我們如何從 GCR 垃圾收集舊的 docker 圖像?

  • May 18, 2021

由於奇怪的歷史原因,我們在 GCS 儲存桶中有 2.14Tb 的數據,用於儲存 Google Container Registry (GCR) 的 docker 映像。

我們曾經gcloud container images delete <image>刪除了數千個未使用的圖像,但是 stackdriver 說儲存在底層 GCS 儲存桶中的總字節數沒有變化。

看起來gcloud container images delete已經從系統資料庫中刪除了圖像元數據,但沒有刪除底層。

有沒有辦法從 GCS 垃圾收集未使用的數據並減少我們的每月賬單?

接受答案後更新

這是我們 GCS 儲存桶中總對像大小的圖表 - 看起來對像大約每 24 小時被垃圾收集一次(在我們的例子中,大約是 UTC 中午)

在此處輸入圖像描述

不特定於 GCR - 在“正常”系統資料庫(來自 docker)中,刪除圖像只會刪除元數據,基本上是“取消標記”的東西。需要額外的垃圾收集。這就是它在港口和 gitlab 中的 docker 系統資料庫中的工作方式。

我對為什麼會發生這種情況的解釋是:一些較低的層可能可以立即重複使用,並且您刪除了一些引用它的圖像這一事實並不一定意味著您再也不想看到它們。所以它們會一直停留到 GC 被顯式呼叫(或預定的 GC 發生)。

引用自:https://serverfault.com/questions/979979