[英]Create Azure container registry to save the docker images and defined the mechanism to remove the older docker images from the ACR
[英]How can we delete images from an Azure container registry (ACR) on an automated schedule?
在 Azure 中,沒有簡單的方法可以從容器注冊表中刪除過時的、未標記的 Docker 映像。 這很快就會成為基本的 10GB 存儲空間的問題。 如該問題的答案和Microsoft 文檔所示,可以在控制台中使用az
命令。 這對於一次性使用很好,但是我們有容器被 CI 推送到那里,並且需要按計划運行它。
我查看了 Azure 自動化運行手冊、調度程序作業和計時器觸發的函數。 它們都提供了按計划做事的方法,但它們都不允許我簡單地在 Azure 控制台上運行某些東西。
我必須在本地機器上安排這個嗎? 這似乎很瘋狂。
自動清除 ( https://feedback.azure.com/forums/903958-azure-container-registry/suggestions/31243189-acr-auto-purge ) 是我們正在開發的一項功能。 我們將在今年秋天擁有第一個功能,但它可能只會提供刪除未標記圖像的功能。
我需要發布我們的設計計划以獲得反饋,但與此同時; az acr repository delete
是最可行的。 從您提到的服務中,如果您運行 az cli,使用 --service-principal 登錄,您應該能夠解釋刪除。 讓我看看我們是否可以發布一個示例/博客來了解如何自動執行此操作。
如果您使用 Azure DevOps (Pipelines),則有一個 Azure CLI 任務,可用於在構建后進行清理。 與計划任務不太一樣,但它對我有用。
生成代理必須安裝 Azure CLI,身份驗證由任務處理。
例如,在每次構建結束時,我都會這樣做:
az acr repository show-manifests \
--name my-registry \
--repository my-image \
--orderby time_desc \
--query "[5:].digest" \
-o tsv \
| xargs -I% az acr repository delete \
--name my-registry \
--image my-image@% \
--yes
這使我可以刪除除最新的 5 個圖像之外的所有圖像 - 即使使用新的 ACR 清除工具,這似乎也是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.