簡體   English   中英

我們如何按自動計划從 Azure 容器注冊表 (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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM