【发布时间】:2016-12-04 06:14:25
【问题描述】:
我的 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 local run”在本地运行会导致:
错误:您需要与卷共享您的 Docker 主机套接字 /tmp/docker.sock 通常你应该运行你的 jwilder/nginx-proxy 与:
-v /var/run/docker.sock:/tmp/docker.sock:ro见 http://git.io/vZaGJ的文档
如果我 ssh 进入我的 docker 机器并运行:
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy
它会创建容器并正确安装卷。
为什么上面的 Dockerrun.aws.json 配置没有正确挂载 /var/run/docker.sock:/tmp/docker.sock 卷?
如果我从 docker-compose.yml 运行相同的配置,它在本地运行良好。但是,我想使用 Dockerrun.aws.json 将相同的配置部署到 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-machine 版本 0.7.0,构建 a650a40
- EB CLI 3.7.7 (Python 2.7.1)
【问题讨论】:
-
边问:你还在用virtualbox和docker机器吗?
-
我在发布这个问题时,现在使用 Kitematic / Docker for Mac。问题依然存在..
标签: docker amazon-elastic-beanstalk docker-machine