我有一个带有2个标签的图像(在AWS ECR中),我只想删除一个标签。
我可以使用以下方法轻松地从本地环境中删除:
docker rmi <REPOSITORY>:<TAG>
我想将其从ECR中删除。任何帮助将不胜感激。
答案 0 :(得分:1)
如果需要删除更多标签,这是已接受答案的扩展:
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
替换grep -E PATTERN
。
答案 1 :(得分:0)
您可以使用以下命令删除标签:
aws ecr batch-delete-image --repository-name <REPO NAME> --image-ids imageTag=<TAG NAME>
我只有一个标签并执行此命令,然后它将删除图像。如果同一张图片有多个标签,请指定一个,然后仅删除标签。
答案 2 :(得分:0)
我们可以通过在每次调用 `aws ecr batch-delete-image
时使用多个--image-ids
来改进 "delete more tags" answer 的批处理解决方案
假设要删除每行包含 1 个标签的文件 ecr-image-tags-${ECR_REPO}.txt
(根据另一个答案。)不要忘记从要保留的文件中删除标签!
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 的单个调用中。