Amazon web services AWS弹性豆茎&x27;CannotPullContainerError';用于专用docker映像(多实例)
我有一个单实例elastic beanstalk环境,它运行docker映像,作为Dockerhub上的私有映像托管。这个很好用。我正在尝试创建一个新的多容器环境,它运行完全相同的映像(加上另一个映像,在这里的代码示例中没有提到)。在多容器环境中,我无法让elastic beanstalk启动我的docker映像,我得到以下错误:Amazon web services AWS弹性豆茎&x27;CannotPullContainerError';用于专用docker映像(多实例),amazon-web-services,docker,amazon-elastic-beanstalk,dockerhub,Amazon Web Services,Docker,Amazon Elastic Beanstalk,Dockerhub,我有一个单实例elastic beanstalk环境,它运行docker映像,作为Dockerhub上的私有映像托管。这个很好用。我正在尝试创建一个新的多容器环境,它运行完全相同的映像(加上另一个映像,在这里的代码示例中没有提到)。在多容器环境中,我无法让elastic beanstalk启动我的docker映像,我得到以下错误: ECS任务已停止,原因是:任务启动失败。(img1_名称:img2_名称:CannotPullContainerError:来自守护程序的错误响应:拒绝用户/repo
ECS任务已停止,原因是:任务启动失败。(img1_名称:img2_名称:CannotPullContainerError:来自守护程序的错误响应:拒绝用户/repo的拉取访问,存储库不存在或可能需要“docker登录”:拒绝:拒绝请求的资源访问)
以下是适用于我的单实例环境的dockerrun:
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "my_bucket",
"Key": ".dockercfg"
},
"Image": {
"Name": "user/repo:tag",
"Update": "true"
},
"Ports": [
{
"ContainerPort": 5000,
"HostPort": 443
}
],
"Logging": "/var/log/nginx"
}
下面是.dockerfcg文件:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "my_token"
}
}
}
同样,上述方法也很有效
我的多实例dockerrun文件如下:
{
"AWSEBDockerrunVersion": "2",
"authentication": {
"bucket": "my_bucket",
"key": ".dockercfg"
},
"containerDefinitions": [
{
"name": "img_name",
"image": "user/repo:tag",
"essential": true,
"memoryReservation": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 5000
}
]
}
],
"Logging": "/var/log/nginx"
}
我已将ssh连接到elastic beanstalk实例中,并运行以下操作以检查它是否能够从我的s3 bucket访问.dockercfg:
aws s3api获取对象--bucket mybucket--key dockercfg dockercfg
我还尝试了各种不同格式的.dockercfg文件,包括
{
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i",
"email": "email@example.com"
}
}
我对此非常恼火,我在这里和AWS论坛上发现了一些类似的帖子,但似乎没有什么能解决我的问题。非常感谢您的帮助。您尝试过用户名和密码格式吗?里面说Docker Hub使用身份验证文件的用户名和密码样式?您使用的是AL2还是AL1?水桶在同一地区吗?您能否手动提取该图像以排除任何非EB问题?Docker版本1.7及更高版本将使用第二种形式(不含电子邮件)作为Docker配置文件,而较旧版本将使用第一种形式。你明白了吗?@josephmisiti最终我让它工作了(不知怎么的),但我认为我从来没有真正明白出了什么问题。我的dockerrun文件看起来仍然与我文章中的(多实例)示例相同。“.dockercfg”文件现在看起来与我文章中的第二个示例相同。也许我用错了证件或者别的什么。不幸的是,这不是一个非常明确的结果。
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "zq212MzEXAMPLE7o6T25Dk0i"
}
}
}