“nginx-proxy”docker image socket volume not mounted

我的Dockerrun.aws.json看起来像这样:

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "docker-socket", "host": { "sourcePath": "/var/run/docker.sock" } } ], "containerDefinitions": [ { "name": "nginx", "image": "nginx", "environment": [ { "name": "VIRTUAL_HOST", "value": "demo.local" } ], "essential": true, "memory": 128 }, { "name": "nginx-proxy", "image": "jwilder/nginx-proxy", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "mountPoints": [ { "sourceVolume": "docker-socket", "containerPath": "/tmp/docker.sock", "readOnly": true } ] } ] } 

使用“eb本地运行”在本地运行此结果将导致:

错误:您需要在/tmp/docker.sock中使用卷来共享您的Docker主机套接字通常,您应该使用以下命令运行jwilder / nginx-proxy: -v /var/run/docker.sock:/tmp/docker.sock:ro请参阅http://git.io/vZaGJ上的文档

如果我ssh进入我的docker机器并运行:

docker运行-d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder / nginx-proxy

它创build容器并正确安装卷。

为什么上面的Dockerrun.aws.jsonconfiguration没有正确地挂载/var/run/docker.sock:/tmp/docker.sock卷?

如果我从docker-compose.yml运行相同的configuration,它在本地工作正常。 但是,我想使用Dockerrun.aws.json将相同的configuration部署到Elastic Beanstalk:

 version: '2' services: nginx: image: nginx container_name: nginx cpu_shares: 100 volumes: - /var/www/html environment: - VIRTUAL_HOST=demo.local nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy cpu_shares: 100 ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro 

我的本地设置是使用:

  • VirtualBox 5.0.22 r108108
  • docker机版本0.7.0,构builda650a40
  • EB CLI 3.7.7(Python 2.7.1)

您的Dockerrun.aws.json文件可以在AWS EB中正常工作(只是稍微更改了它以使用我们自己的容器/主机名来代替'nginx'容器)。 这只是“eb本地运行”设置的问题,或许?

正如你所说的是在Mac上,尝试升级到新的docker 1.12,它本身在osx上运行docker,或者至less是更新版本的docker-machine – https://docs.docker.com/machine/install-machine/#/安装机,直接