17

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

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

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

4

3 回答 3

36

您可以使用以下命令删除标签:

aws ecr batch-delete-image --repository-name <REPO NAME> --image-ids imageTag=<TAG NAME>

我只有一个标签并执行此命令,然后它将删除图像。如果同一图像有多个标签,请指定一个并且仅删除该标签。

于 2019-05-27T13:56:37.100 回答
4

如果需要删除更多标签,这是已接受答案的扩展:

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

于 2020-01-19T12:11:30.490 回答
0

我们可以通过对“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.

于 2021-07-12T18:44:27.107 回答