【发布时间】:2019-10-11 10:38:02
【问题描述】:
我有一个带有 2 个标签的图像(在 AWS ECR 中),我只想删除一个标签。
我可以使用以下方法轻松地从本地环境中删除:
docker rmi <REPOSITORY>:<TAG>
我想从 ECR 中删除它。任何帮助将不胜感激。
【问题讨论】:
标签: aws-ecr amazon-ecr
我有一个带有 2 个标签的图像(在 AWS ECR 中),我只想删除一个标签。
我可以使用以下方法轻松地从本地环境中删除:
docker rmi <REPOSITORY>:<TAG>
我想从 ECR 中删除它。任何帮助将不胜感激。
【问题讨论】:
标签: aws-ecr amazon-ecr
您可以使用命令删除标签:
aws ecr batch-delete-image --repository-name <REPO NAME> --image-ids imageTag=<TAG NAME>
如果你只有一个标签并执行此命令,它将删除图像。如果同一图像有多个标签,请指定一个,并且仅删除该标签。
【讨论】:
如果需要删除更多标签,这里是已接受答案的扩展:
ECR_REPO="my-repo-name"
# Create a file with the list of AWS ECR tags, with one tag per line
aws ecr list-images --repository-name $ECR_REPO --filter "tagStatus=TAGGED" \
--query "imageIds[*]" --output text \
| cut -f2 > ecr-image-tags-${ECR_REPO}.txt
# For each tag, delete the image on AWS ECR
cat ecr-image-tags-${ECR_REPO}.txt | xargs -I {} \
aws ecr batch-delete-image --repository-name ${ECR_REPO} --image-ids imageTag={} | cat
如果您想选择性地删除带有特定模式的标记图像,也可以将最后一行中的cat 替换为grep -E PATTERN。
【讨论】:
--image-ids。如果您要删除大量标签以避免任何资源限制,您可能需要批量处理这些标签
我们可以通过每次调用 `aws ecr batch-delete-image 使用多个 --image-ids 来改进 "delete more tags" answer 的批处理解决方案
假设文件 ecr-image-tags-${ECR_REPO}.txt 每行包含 1 个要删除的标签(根据其他答案。)不要忘记从要保留的文件中删除标签!
BATCH_SIZE=20 # set max number of tags per batch-delete-image call
< ecr-image-tags-${ECR_REPO}.txt sed -e 's/^/imageTag=/' | \
xargs -n $BATCH_SIZE \
aws ecr batch-delete-image --image-ids
删除-n $BATCH_SIZE 会将所有标签放在对batch-delete-image 的一次调用中。
【讨论】: