使用远程API从AWS ECR中拖出Docker镜像

我已经按照这个post尝试从AWS ECR下载Docker镜像,但出现以下错误:

如果我做:

#!/bin/sh repository="2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro" tag="2.13.0-np-1.0" ecr_token=$(aws ecr get-authorization-token --output text --query authorizationData[].authorizationToken | cut -d: -f2) docker_login=$(echo "{\"username\":\"AWS\",\"password\":\"${ecr_token}\", \"auth\":\"\",\"email\":\"none\"}" | base64) curl -X POST -d "" -H "X-Registry-Auth: ${docker_login}" http://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

然后我得到以下错误:

 $ error parsing HTTP 403 response body: invalid character 'Y' looking for beginning of value: "Your Authorization Token has expired. Please run 'aws ecr get-login' to fetch a new one." 

即使我只是“请求”令牌。

如果我这样做:

 #!/bin/sh repository="2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro" tag="2.13.0-np-1.0" ecr_token=$(aws ecr get-login | awk '{print ($6)}') docker_login=$(echo "{\"username\":\"AWS\",\"password\":\"${ecr_token}\", \"auth\":\"\",\"email\":\"none\"}" | base64) curl -X POST -d "" -H "X-Registry-Auth: ${docker_login}" http://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

我得到以下错误:

 $ error parsing HTTP 404 response body: invalid character 'p' after top-level value: "404 page not found\n" 

该图像是在ECR,我可以拉它,如果我做docker login ...然后docker pull 2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro:2.13.0-np-1.0

我不知道我在做什么错在这里..任何帮助非常感谢!

基本authentication仅支持HTTPS。 在通过HTTP推送/注册registry时,docker客户端不会发送基本的auth头文件。 这是通过devise完成的,以防止人们通过不安全的渠道发送凭证。 使用SSL应该摆脱这个问题。

尝试使用下面:

 https://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

或者从拉取图像的位置启用实例的SSL证书。 这可能会帮助你。 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-an-instance.html