You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行在ACR中保留最新10个镜像并删除其余?

Azure容器注册表保留最新10个镜像并删除其余的命令行实现

az acr purge本身没有直接的--limit参数来指定保留最新N个镜像,但可以结合az acr repository系列命令筛选出需要保留的镜像,再通过az acr purge删除其余镜像,以下是两种可行方案:

方案一:按标签保留最新10个镜像(适用于带标签的镜像)

先筛选出仓库中创建时间最新的10个标签,再让az acr purge排除这些标签,删除其他所有镜像(可选包含未标记镜像)。

本地测试命令

先获取最新10个标签:

az acr repository show-tags --name <ACR_NAME> --repository <REPOSITORY_NAME> --orderby time_desc --top 10 --output tsv

创建定时清理任务:

az acr task create \
  --name "purge-old-images" \
  --resource-group "<RESOURCE_GROUP_NAME>" \
  --registry "<ACR_NAME>" \
  --cmd "az acr purge --name <ACR_NAME> --repository <REPOSITORY_NAME> \
    $(az acr repository show-tags --name <ACR_NAME> --repository <REPOSITORY_NAME> --orderby time_desc --top 10 --output tsv | sed 's/^/-t !/')" \
  --schedule "0 0 * * *"

如果需要同时删除未标记镜像,在az acr purge命令后添加--untagged参数即可。

方案二:按镜像manifest保留最新10个镜像(支持未标记镜像)

如果要保留包括未标记在内的最新10个镜像,需要基于镜像的manifest digest来筛选:

本地测试命令

先获取最新10个manifest的digest:

az acr repository show-manifests --name <ACR_NAME> --repository <REPOSITORY_NAME> --orderby time_desc --top 10 --query "[].digest" --output tsv

创建定时清理任务:

az acr task create \
  --name "purge-old-images" \
  --resource-group "<RESOURCE_GROUP_NAME>" \
  --registry "<ACR_NAME>" \
  --cmd "az acr purge --name <ACR_NAME> --repository <REPOSITORY_NAME> \
    $(az acr repository show-manifests --name <ACR_NAME> --repository <REPOSITORY_NAME> --orderby time_desc --top 10 --query "[].digest" --output tsv | sed 's/^/-d !/')" \
  --schedule "0 0 * * *"

注意事项

  • 替换命令中的<RESOURCE_GROUP_NAME>、<ACR_NAME>、<REPOSITORY_NAME>为实际资源信息。
  • 建议先在本地执行筛选命令,确认获取的标签/manifest符合预期后,再创建定时任务。
  • ACR任务默认使用的服务主体已具备执行相关命令的权限,无需额外配置。

内容的提问来源于stack exchange,提问作者hades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:06:23