我有一个带有 2 个标签的图像(在 AWS ECR 中),我只想删除一个标签。
我可以使用以下方法轻松地从本地环境中删除:
docker rmi <REPOSITORY>:<TAG>
我想从 ECR 中删除它。任何帮助,将不胜感激。
我有一个带有 2 个标签的图像(在 AWS ECR 中),我只想删除一个标签。
我可以使用以下方法轻松地从本地环境中删除:
docker rmi <REPOSITORY>:<TAG>
我想从 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
我们可以通过对“aws ecr batch-delete-image”的每次调用使用多个来改进“删除更多标签”答案的批处理解决方案--image-ids
Assuming a file ecr-image-tags-${ECR_REPO}.txt
containing 1 tag per line to be removed (as per the other answer.) Don't forget to remove the tags from the file that you want to keep!
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
Removing -n $BATCH_SIZE
will put all the tags in a single call to batch-delete-image.