我正在尝试从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.
答案 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_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