如何删除ACR中除带标签镜像外的所有清单?
批量删除Azure容器注册表(ACR)中无标签的镜像清单
你可以通过Azure CLI结合脚本批量删除无标签的镜像清单,无需手动逐个操作。以下是两种常见环境下的实现方式:
Bash脚本(Linux/macOS/WSL)
# 替换为你的ACR名称 ACR_NAME="testqacontainers" # 批量删除所有无标签的镜像清单 az acr manifest list-metadata -r $ACR_NAME --filter "tags[]" --query "[].{digest: digest, repository: repository}" -o tsv | while read digest repo; do az acr manifest delete -r $ACR_NAME -n "$repo@$digest" --yes done
PowerShell脚本(Windows)
# 替换为你的ACR名称 $ACR_NAME = "testqacontainers" # 获取所有无标签的镜像清单 $untaggedManifests = az acr manifest list-metadata -r $ACR_NAME --filter "tags[]" --query "[].{digest: digest, repository: repository}" -o json | ConvertFrom-Json # 循环删除清单 foreach ($manifest in $untaggedManifests) { az acr manifest delete -r $ACR_NAME -n "$($manifest.repository)@$($manifest.digest)" --yes }
关键说明
--filter "tags[]":用于筛选出没有关联任何标签的镜像清单--yes:添加该参数会跳过删除确认,直接执行操作;若需要手动确认,可移除该参数- 执行前可先单独运行
az acr manifest list-metadata命令,查看要删除的清单列表,确认无误后再执行删除逻辑 - 确保你的账号拥有ACR的
AcrDelete或AcrPush权限,否则无法执行删除操作
内容的提问来源于stack exchange,提问作者Saikumar
相关产品推荐
相关产品推荐

