【问题标题】:Remove ECR image tag despite ImageReferencedByManifestList error尽管出现 ImageReferencedByManifestList 错误,仍删除 ECR 图像标签
【发布时间】:2022-01-01 00:33:23
【问题描述】:

我希望能够删除 ECR 图像标签,但不删除底层图像本身。用例是一个临时标签,仅用于推送图像,然后作为清单列表的一部分引用,随后需要删除。

我找到了Remove tag from image,但在这种情况下并没有帮助。 batch-delete-image 操作有时只是删除一个标签(如果图像有多个标签),或者如果图像只有一个标签,则尝试删除图像本身。

如果该图像作为清单列表的一部分被引用,则操作失败:

$ aws ecr-public batch-delete-image --region=$REGION --repository-name $REPO --image-ids imageTag=TEMP 
2{
3    "imageIds": [],
4    "failures": [
5        {
6            "imageId": {
7                "imageTag": "TEMP"
8            },
9            "failureCode": "ImageReferencedByManifestList",
10            "failureReason": "Requested image referenced by manifest list: [sha256:f0446c2685b48eedefa1a90085c513ddae548226b087fa3a7ced8f94cf4aff70]"
11        }
12    ]
13}

【问题讨论】:

    标签: docker amazon-ecr docker-tag amazon-ecr-public


    【解决方案1】:

    联系亚马逊支持后,我被告知唯一的解决方法是将一些随机图像推送到临时标签(我使用busybox),然后使用batch-delete-image 操作删除标签,如下所示:

    $ docker pull busybox
    $ docker tag busybox public.ecr.aws/$REPO:TEMP
    $ docker push public.ecr.aws/$REPO:TEMP
    $ aws ecr-public batch-delete-image --region=$REGION --repository-name $REPO --image-ids imageTag=TEMP
    

    我不禁认为这种情况揭示了 ECR 中的设计缺陷,因为清单列表引用是使图像在注册表中保持活动所需的全部内容。 ECR 似乎将标签视为图像的属性,而不是图像的独立指针。

    编辑:我为此提交了一个问题:https://github.com/aws/containers-roadmap/issues/1567

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-21
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2018-04-09
      • 2012-09-14
      相关资源
      最近更新 更多