amazon-web-services - AWS ElasticBeanstalk 从 Gitlab 注册表中提取 Docker 镜像

标签 amazon-web-services docker gitlab gitlab-ci amazon-elastic-beanstalk

我很难将 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/

相关文章:

java - 如何记录到显式 AWS CloudWatch 日志流并以编程方式更改它 (Java/Scala/log4j)

php - 使用Nginx和php5设置docker

amazon-web-services - 授权异常 : The security token included in the request is expired

amazon-web-services - AWS Lambda 实例如何扩展?

docker - 如何通过Docker将Jmeter结果与Elasticsearch和Grafana集成?

python - 预接收 Hook 中的 git push 选项

branch - 修复 GitLab 错误 : "you are not allowed to push code to protected branches on this project"?

gruntjs - 如何在 .gitlab-ci.yml 中的 GitLab CI 中部署所有现代工具(Ruby、Node.js、Bower、Grunt、Jekyll)

mysql - 从没有公共(public)访问权限的 VPC 外部访问 AWS RDS

c# - 使用 C# 通过 VNet 创建 Azure 容器实例