Docker容器之间的双向通信

时间:2016-06-16 06:52:38

标签: tomcat docker docker-compose

我希望在docker容器之间建立双向通信。我有以下容器:

1.Apache
2.Tomcat A
3.Tomcat B
4.Tomcat C
5.MySQL  

Apache充当反向代理并将请求转发给Tomcat A,B和C.所有Tomcat容器都将与MySQL数据库通信。截至目前,我在Apache中有链接向tomcat容器发送请求,而tomcat容器具有通信链接与MySQL数据库。 现在我需要在tomcat容器之间建立双向通信就像Tomcat A想要与Tomcat B和Tomcat C交谈,反之亦然。我们如何用Docker Compose实现这一点?是否可以在docker-compose.yml文件中提供双向链接?

提前致谢。

1 个答案:

答案 0 :(得分:1)

不,链接不是双向的,因此您无法实现它。

您可以做的是将容器设置在同一个网络中,这样他们就可以通过容器名称互相访问。

例如

docker network create newnetwork
docker run -d --name apache --net=newnetwork Apache
docker run -d --name tomcatA --net=newnetwork TomcatA
...

这样做,容器apache将能够ping /访问tomcatA,而tomcatA将能够ping /访问apache。

了解如何使用docker-compose集成网络:https://docs.docker.com/compose/networking/#specifying-custom-networks

我不确定这部分,但是由于docker~1.10,似乎您不需要创建网络,默认网络将所有容器连接在一起,因此您已经可以ping /访问每个容器其他人通过他们的名字。 (查看容器中的/ etc / hosts文件,如果你看到其他容器名称及其IP,那么你可以去了)