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

won*_*ton 4 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
Run Code Online (Sandbox Code Playgroud)

won*_*ton 10

因此,我发现了一种用户不友好的方式。您首先标记未标记的图像,然后再下载。在这里,我将未标记的图像标记为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"
Run Code Online (Sandbox Code Playgroud)

然后我可以正常下载

docker pull myarn.amazonaws.com/sandbox:backup
Run Code Online (Sandbox Code Playgroud)

  • 如果在AWS配置中配置区域,则不必输入区域,请参阅https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html (2认同)

小智 7

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

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

至少它确实适用于我未标记的图像。


Luk*_*uke 6

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

\n

要提取未标记的 docker 映像,请使用可以从 ECR 存储库复制的 sha 来获取未标记的映像(感谢@Gy\xc5\x91z\xc5\x91 Papp \' 答案),例如:

\n
docker pull 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository@sha256:bee1809b6ab2918yfdjsajhf21398f41cfc2dcc69d27253\n
Run Code Online (Sandbox Code Playgroud)\n

要在拉取后重新标记它,请使用 docker tag 和您想要的任何标签,下面的示例使用 tag 对其进行标记my-new-tag

\n
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\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
docker push 1283761230897.dkr.ecr.us-east-1.amazonaws.com/my-repository:my-new-tag\n
Run Code Online (Sandbox Code Playgroud)\n

您需要先使用first在本地登录ECRget-login ...

\n