我很难将 Docker 镜像从私有(private) Gitlab 注册表拉取到 AWS MultiContainer ElasticBeanstalk 环境。
我已将 .dockercfg 添加到与我的集群位于同一区域的 S3 中,并且还允许 aws-elasticbeanstalk-ec2-role IAM 角色从 S3 获取数据。
ElasticBeanstalk 始终返回错误 CannotPullContainerError: API 错误 (500)
我的.dockercfg采用以下格式:
{
"https://registry.gitlab.com" : {
"auth" : “my gitlab deploy token“,
"email" : “my gitlab token name“
}
}
在Dockerrun.aws.json内我添加了以下内容
"authentication": {
"bucket": "name of my bucket",
"key": ".dockercfg"
},
当我尝试通过 docker login -u gitlabtoken-name -p token 登录时,它工作正常。
最佳答案
gitlab 部署 token 不是身份验证 key 。
为了生成正确的身份验证 key ,我通常执行以下操作:
docker run -ti docker:dind sh -c "docker login -u name -p deploy-token registry.gitlab.com && cat /root/.docker/config.json"
它会打印如下内容:
{
"auths": {
"registry.gitlab.com": {
"auth": "your-auth-key"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.0 (linux)"
}
}
然后,根据 elasticbeanstalk 文档 "Using Images From a Private Repository " ,你应该只拿需要的东西。
希望这对您有帮助!
关于amazon-web-services - AWS ElasticBeanstalk 从 Gitlab 注册表中提取 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470289/