Docker 拉取错误 AWS ECR“未经授权:需要身份验证”

use*_*894 2 amazon-web-services docker amazon-ecr

我登录到 AWS ECR 存储库并触发了 pull 命令,但出现了此错误

# $(aws ecr get-login --no-include-email)
Login Succeeded

# docker pull 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1                                        
Pulling repository 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1
unauthorized: authentication required
Run Code Online (Sandbox Code Playgroud)

lan*_*rix 7

Amazon详细记录了如何使用 AWS CLI 允许 docker 对 Amazon ECR 注册表进行身份验证。

不过,get-login现在已被弃用。您将需要使用get-login-password它。

他们在文档中指出,您可以将身份验证令牌传递给 docker login 命令。您还需要指定要进行身份验证的 Amazon ECR 注册表 URI。

例如

$ aws ecr get-login-password --region us-east-1 \
  | docker login --username AWS --password-stdin \
  123456789012.dkr.ecr.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

然后我可以根据 拉取图像registry/repository[:tag]

注册表是您的帐户 ID 和区域 ECR 端点的组合,例如:

123456789012.dkr.ecr.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

存储库是存储图像的位置的名称,例如:

myrepo
Run Code Online (Sandbox Code Playgroud)

Tag是通常的图像元数据,例如:latest

下面是验证和拉取镜像的完整示例:

$ aws ecr get-login-password --region ap-southeast-2 \
  | docker login --username AWS --password-stdin \
  123456789012.dkr.ecr.ap-southeast-2.amazonaws.com

$ docker pull 123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
latest: Pulling from myrepo
5bed26d33875: Pull complete
Digest: sha256:aabbccdd
Status: Downloaded newer image for 123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
Run Code Online (Sandbox Code Playgroud)