从Bitbucket Pipelines从Amazon ECR提取图像

时间:2019-02-11 21:50:33

标签: amazon-web-services docker bitbucket-pipelines

我正在尝试从Bitbucket管道中的私有Amazon Docker存储库(ECR)中提取docker映像。

我正在执行以下操作:

script:           
   - aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION
   - docker run -d -p 9092:9092 --name=kapi $AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/company/kapi:1.0

我在管道上看到的错误:

docker: Error response from daemon: Get https://$AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/v2/company/kapi/manifests/1.0: no basic auth credentials.

2 个答案:

答案 0 :(得分:1)

错误似乎很明显:

no basic auth credentials

aws ecr get-login 返回要执行的命令以登录。我不知道您使用哪个平台,但是如果您使用的是Linux,

尝试执行AWS返回的命令:

$(aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION)

您应该从docker收到一条消息,表明您已成功登录:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

调试

您仍然可以通过手动运行以下命令来调试它是否仍然无法运行:

aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION

它应该返回类似:

docker login -u AWS -p ALongText https://ID.dkr.ecr.REGION.amazonaws.com

答案 1 :(得分:0)

aws ecr get-login命令生成一个docker login命令。除非您eval,否则它实际上不会登录到注册表。只要您的AWS_ACCESS_IDAWS_ACCESS_SECRET是正确的,这应该可以工作:

eval $(aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION)

您的脚本步骤应如下所示:

script:           
   - aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION
   - docker run -d -p 9092:9092 --name=kapi $AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/company/kapi:1.0