【问题标题】:Remove tag from image从图像中删除标签
【发布时间】:2019-10-11 10:38:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: aws-ecr amazon-ecr


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

      • batch-delete-image 将多个参数传递给--image-ids。如果您要删除大量标签以避免任何资源限制,您可能需要批量处理这些标签
      【解决方案3】:

      我们可以通过每次调用 `aws ecr batch-delete-image 使用多个 --image-ids 来改进 "delete more tags" answer 的批处理解决方案

      假设文件 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 的一次调用中。

      【讨论】:

        猜你喜欢
        • 2016-01-23
        • 1970-01-01
        • 2013-01-30
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 2011-05-13
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多