我有一个Docker多容器配置,可以在ElasticBeanstalk环境中运行。
EB环境在VPC中运行,在公有子网中,具有单个负载均衡器和单个实例绑定。
看起来所有容器都运行正常,但即使我将它们定义为链接容器,它们也无法相互通信。
我需要做些什么来让所有这些容器互相交谈?
我的Dockerrun.aws.json看起来像这样:
"containerDefinitions":
[
{
"name": "proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings":
[
{
"hostPort": 80,
"containerPort": 80
}
],
"links":
[
"webapp"
],
"mountPoints":
[
{
"sourceVolume": "nginx-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-proxy",
"containerPath": "/var/log/nginx"
}
]
},
{
"name": "webapp",
"image": "jetty",
"memory": 2048,
"essential": true,
"portMappings":
[
{
"hostPort": 8080,
"containerPort": 8080
}
],
"links":
[
"mongodb"
],
"mountPoints":
[
{
"sourceVolume": "jetty-webapp",
"containerPath": "/var/lib/jetty/webapps",
"readOnly": false
},
{
"sourceVolume": "awseb-logs-webapp",
"containerPath": "/var/log/jetty"
}
]
},
{
"name": "mongodb",
"image": "mongo",
"memory": 1024,
"essential": true,
"portMappings":
[
{
"hostPort": 27017,
"containerPort": 27017
}
],
"mountPoints":
[
{
"sourceVolume": "mongodb-data",
"containerPath": "/data/db",
"readOnly": false
}
]
}
]
答案 0 :(得分:1)
在我的情况下,它与安全组无关,因为我公开曝光的所有内容都是80用于Nginx代理。
归结为使用我/ etc / host(webapp,mongodb)中的名称而不是为容器创建的IP。
这修复了我从Nginx到Jetty和Jetty到MongoDB的连接。
答案 1 :(得分:0)
2017年,使用容器定义:links
以及要连接的Docker容器的名称。 Docker的内置网桥将从那里建立连接。