从图像中删除标签
Remove tag from image
我有一个带有 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
假设文件 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 的一次调用中。
我有一个带有 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
。
我们可以改进
--image-ids
假设文件 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 的一次调用中。