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

如何无需逐个指定仓库名即可批量清理Azure容器注册表(ACR)中所有仓库的镜像

自动生成ACR批量清理的Purge命令

手动给800个仓库写--filter确实太折磨人了!咱们可以用Azure CLI结合简单的文本处理,自动获取所有仓库并生成完整的清理命令,一步搞定。

完整的解决方案命令

直接运行下面的bash命令(记得把myregistry换成你的ACR名称):

# 1. 自动获取所有仓库并生成对应的--filter参数
FILTERS=$(az acr repository list --registry myregistry --output tsv | awk '{print "--filter '\''"$0":.*'\''"}' | tr '\n' ' ')

# 2. 构建完整的清理命令
PURGE_CMD="acr purge $FILTERS --ago 1d --untagged --keep 7"

# 3. 预览生成的命令(可选,确认没问题再执行下一步)
echo $PURGE_CMD

# 4. 创建定时清理任务
az acr task create --name PurgeACRImages \
--cmd "$PURGE_CMD" \
--schedule "5 6 * * 1" \
--registry myregistry \
--timeout 18000 \
--context /dev/null

各部分解释

  • 获取仓库列表:az acr repository list --registry myregistry --output tsv会以每行一个的格式输出ACR里所有仓库的名称,--output tsv确保输出没有多余的格式,方便后续处理。
  • 生成filter参数:用awk把每个仓库名转换成--filter '仓库名:.*'的格式,这里的单引号转义是为了在bash中正确传递字符串;tr '\n' ' '把所有换行符换成空格,让所有filter参数连成一串。
  • 预览命令:建议先执行echo $PURGE_CMD检查生成的命令是否正确,确认所有仓库都被包含在内,避免误操作。
  • 创建任务:最后一步就是创建你原本的定时清理任务,现在的PURGE_CMD已经自动包含了所有800个仓库的过滤规则。

注意事项

  • 如果你的仓库名称包含特殊字符(不过ACR仓库名默认符合DNS规范,一般不会有这类问题),可以微调文本处理逻辑适配;
  • 要是只想清理特定前缀的仓库,比如只处理a开头的仓库,只需给az acr repository list加--prefix a参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:32:46