【问题标题】:Pulling image from Amazon ECR from Bitbucket Pipelines从 Bitbucket Pipelines 从 Amazon ECR 中提取图像
【发布时间】:2019-07-05 11:42:14
【问题描述】:
我正在尝试从 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.
【问题讨论】:
标签:
amazon-web-services
docker
bitbucket-pipelines
【解决方案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
【解决方案2】:
aws ecr get-login 命令生成 docker login 命令。除非你 eval 它,否则它实际上不会让你登录到注册表。如果您的 AWS_ACCESS_ID 和 AWS_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