如何在ECR上下载或标记未标记的图像?

时间:2018-11-07 22:20:32

标签: docker docker-registry elastic-container-registry

ECR上的UI不允许您将标签应用于图像。当您将具有存在标签的图像推送到ECR时,现有图像将按预期取消标记。但是,似乎没有下载未标记图像的方法。例如,我不能简单地下载图像哈希值

docker pull myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365
Error response from daemon: manifest for myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365 not found

3 个答案:

答案 0 :(得分:4)

因此,我发现了一种用户不友好的方式。您首先标记未标记的图像,然后再下载。在这里,我将未标记的图像标记为backup

MANIFEST=$(aws ecr batch-get-image --repository-name sandbox --image-ids imageDigest=sha256:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365 --query 'images[].imageManifest' --output text)
aws ecr put-image --repository-name sandbox --image-tag backup --image-manifest "$MANIFEST"

然后我可以正常下载

docker pull myarn.amazonaws.com/sandbox:backup

答案 1 :(得分:1)

假设 ECR 存储库 arn 为 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository

要拉取未标记的 docker 映像,请使用可以从 ECR 存储库复制的 sha 用于未标记的映像(感谢 @Győző Papp 的回答),例如:

docker pull 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository@sha256:bee1809b6ab2918yfdjsajhf21398f41cfc2dcc69d27253

要在拉取后重新标记,请将 docker tag 与您想要的任何标记一起使用,以下示例使用标记 my-new-tag 对其进行标记:

docker tag 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository@sha256:bee1809b6ab2918yfdjsajhf21398f41cfc2dcc69d27253 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository:my-new-tag

然后将标记版本推送回 AWS ECR:

docker push 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository:my-new-tag

不过,您需要先使用 get-login log in to ECR locally first...

答案 2 :(得分:0)

您必须使用AWS最近在其UI上建议的另一种表示法(当时可能尚不可用):

docker pull myarn.amazonaws.com/sandbox@sha256:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365

至少它可以处理我未标记的图像。