Docker
從私有 Docker 系統資料庫中刪除標籤的簡單方法?
我有一個私有 Docker 系統資料庫 v2.6.0,在圖像上包含多個標記版本:
foo/bar:1 foo/bar:1_keep (same image as 1) foo/bar:2 foo/bar:3 foo/bar:latest (same image as 3)
我想刪除單個標籤而不必刪除圖像。因此,如果我刪除標籤 2,則可以刪除圖像,因為沒有其他內容涉及它。但是如果我刪除標籤 1,只有那個標籤應該去,而不是圖像。
這表明這樣的 API 請求:
DELETE http://repo/v2/foo/bar/tags/1
但這給了我一個 404。相反,我必須刪除清單,這意味著要檢查它是否未被另一個標籤使用。
我查看了https://github.com/fraunhoferfokus/deckschrubber的來源,它似乎並沒有為檢查是否可以安全刪除手稿而煩惱。我錯過了什麼嗎?
有沒有更好的方法來做到這一點?如果沒有,為什麼不呢?它可能會被修復嗎?
目前沒有用於刪除特定標籤的 api。從理論上講,您可以將新的(可能為空的)清單推送到現有標籤,然後將其刪除。否則,您需要跟踪清理常式中的所有標籤和清單,以確定可以安全刪除的內容。
更新:
標記刪除已添加到現在的 1.0 OCI 分發規範中。這樣,pull request (#3427)被批准分發/分發,這是系統資料庫圖像的上游。它是 3.0 版本的里程碑,因此這可能是將來添加的功能。
我也一直在研究實現標籤刪除 API 的regclient,然後退回到推送一個空的清單並刪除它。對於 CLI,regclient 包含 regctl,如下所示:
regctl tag rm registry:5000/repo:tag