从图像中删除标签

时间:2019-05-24 20:29:08

标签: aws-ecr amazon-ecr

我有一个带有2个标签的图像(在AWS ECR中),我只想删除一个标签。

我可以使用以下方法轻松地从本地环境中删除: docker rmi <REPOSITORY>:<TAG>

我想将其从ECR中删除。任何帮助将不胜感激。

3 个答案:

答案 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 的单个调用中。