ECR上的UI不允许您将标签应用于图像。当您将具有存在标签的图像推送到ECR时,现有图像将按预期取消标记。但是,似乎没有下载未标记图像的方法。例如,我不能简单地下载图像哈希值
docker pull myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365
Error response from daemon: manifest for myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365 not found
答案 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
至少它可以处理我未标记的图像。