使用--untagged参数执行acr purge为何删除已标记ACR镜像?
ACR purge命令误删带标签镜像及仓库的原因解析
对
--untagged参数的逻辑误解--untagged不是只删除本身无标签的镜像清单,它的执行逻辑是:先筛选出符合--filter和--ago条件的所有清单,移除这些清单上的全部标签,随后删除变成无标签状态的清单。你的命令里--filter '[repository-name]:.*'匹配了该仓库下所有带标签的镜像,加上--ago 1m覆盖了几乎所有创建时间超过1分钟的镜像,目标清单直接被命中——先被移除"982878"和"master"标签,变成无标签后被删除。仓库自动清理的默认行为
Azure容器注册表的仓库在所有镜像清单被删除后,会自动触发仓库删除操作,这是平台默认的清理机制,所以当唯一的镜像清单被移除后,仓库也随之被清空删除。正确的命令使用方式
如果仅需清理无标签的旧镜像,需要调整参数避免误删带标签镜像:- 缩小
--ago的时间范围,确保带标签的目标镜像不在筛选范围内,比如将1m改为7d(7天),仅清理一周前的无标签镜像:az acr run --cmd "acr purge --filter '[repository-name]:*' --untagged --ago 7d" --registry [registry-name] /dev/null - 使用
--keep参数保留指定数量的最新带标签镜像,避免被误删:az acr run --cmd "acr purge --filter '[repository-name]:*' --untagged --keep 1 --ago 1m" --registry [registry-name] /dev/null - 通过
--filter排除特定标签,比如要保留master标签:az acr run --cmd "acr purge --filter '[repository-name]:*' --filter '[repository-name]:master' --exclude --untagged --ago 1m" --registry [registry-name] /dev/null
- 缩小
内容的提问来源于stack exchange,提问作者Konzy262
相关产品推荐
相关产品推荐

