关于亚马逊网络服务:AWS ElasticBeanstalk从Gitlab注册表中提取Docker映像

AWS ElasticBeanstalk pull Docker image from Gitlab registry

我很难将Docker映像从私有Gitlab注册表中提取到AWS MultiContainer ElasticBeanstalk环境中。

我已将.dockercfg添加到与群集相同区域的S3中,并且还允许aws-elasticbeanstalk-ec2-role IAM角色从S3获取数据。

ElasticBeanstalk始终返回错误CannotPullContainerError:API错误(500)

我的.dockercfg的格式为:

1
2
3
4
5
6
{
   "https://registry.gitlab.com" : {
     "auth" :"my gitlab deploy token",
     "email" :"my gitlab token name"
    }
}

在Dockerrun.aws.json内部,我添加了以下内容

1
2
3
4
 "authentication": {
   "bucket":"name of my bucket",
   "key":".dockercfg"
  },

当我尝试通过docker login -u gitlabtoken-name -p token登录时,它可以正常运行。


gitlab部署令牌不是auth密钥。

要生成正确的身份验证密钥,通常需要执行以下操作:

1
docker run -ti docker:dind sh -c"docker login -u name -p deploy-token registry.gitlab.com && cat /root/.docker/config.json"

,它将显示类似以下内容的内容:

1
2
3
4
5
6
7
8
9
10
{
 "auths": {
   "registry.gitlab.com": {
     "auth":"your-auth-key"
    }
  },
 "HttpHeaders": {
   "User-Agent":"Docker-Client/18.09.0 (linux)"
  }
}

然后,根据elasticbeanstalk docs"使用私有存储库中的图像
",您应该随需随便。

希望这会对您有所帮助!