将图像从公共 Docker Hub 拉取到 AWS Elastic Beanstalk 多个容器

Posted

技术标签:

【中文标题】将图像从公共 Docker Hub 拉取到 AWS Elastic Beanstalk 多个容器【英文标题】:Pulling Image from Public Docker Hub to AWS Elastic Beanstalk Multiple Container 【发布时间】:2020-06-17 04:15:21 【问题描述】:

我试图让多个容器在同一个 Elastic Beanstalk 实例上运行,其中一个 NodeJS 服务器侦听来自 ReactJS/Webpack 客户端的 API——每个容器都在各自的容器中运行。我正在使用一个 Dockerrun.aws.json 文件,该文件从我的公共 docker 存储库中提取图像。当我将 Dockerrun.aws.json 部署到 Elastic Beanstalk 时,它表示该实例正在 AWS 控制台内运行。但是,我无法访问 URL,并且从日志中收到以下错误:

mv: cannot stat ‘/etc/init/eb-ecs.conf.disabled’: No such file or directory
  Error response from daemon: No such image: 6011d33fc722:latest

我的问题是如何让 Elastic Beanstalk 拉取并在我的 EC2 实例上运行容器?我已经尝试将图像放入 Elastic Container Repositories 中,结果相似。


    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        
            "name": "dev-server",
            "image": "sjryall/dev-server-v2:latest",
            "memory": 128,
            "portMappings": [
                
                    "hostPort": 8000,
                    "containerPort": 8000
                
            ],
            "links": [
                "dev-client"
            ]
        ,
        
            "name": "dev-client",
            "image": "sjryall/dev-client-v2:latest",
            "memory": 128,
            "portMappings": [
                
                    "hostPort": 80,
                    "containerPort": 80
                
            ]
        
    ]

【问题讨论】:

是您的图像名称6011d33fc722 。错误消息显示6011d33fc722 是图像,latest 是标签。 请发布您的dockerrun.aws.json 是的 6011d33fc722 是图像 ID。上面的dockerrun.aws.json文件我已经贴出来了。 【参考方案1】:

您必须有一个.dockercfg 文件,其中包含您对存储库的身份验证信息,并将其存储在 s3 存储桶中。这将包括根据 docker 存储库对自己进行身份验证的凭据。

文件应如下所示。


  "auths": 
    "https://index.docker.io/v1/": 
      "auth": "your_auth_string",
      "email": "your_email"
     
   

那么您的Dockerrun.aws.json 应该有一个身份验证部分,该部分定义了 s3 存储桶和指向您刚刚上传到 s3 的文件的密钥。


  "AWSEBDockerrunVersion": 2,
  "Authentication": 
    "Bucket": "bucket-that-contains-the-file",
    "Key": "location/.dockercfg"
  

希望这会有所帮助。

参考: https://documentation.codeship.com/pro/builds-and-configuration/image-registries/

【讨论】:

谢谢。但是我在 docker hub 上的图片是公开的,所以我很确定这不是问题。它在文档中声明:Note that on Docker Hub, you can use public images without any authentication being required.

以上是关于将图像从公共 Docker Hub 拉取到 AWS Elastic Beanstalk 多个容器的主要内容,如果未能解决你的问题,请参考以下文章

使用 docker-compose 从私有仓库拉取镜像

Docker 基本操作 镜像操作 -- docker镜像命令

基于Docker Hub镜像的ProxySQL容器化部署与运行

从dockerhub中拉取python镜像环境

ElasticBeanstalk - 无法从私有 Docker Hub 存储库中提取 docker 映像

Docker仓库管理镜像 -- 公共仓库Docker Hub和私人仓库Registry和harbor