我希望在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文件中提供双向链接?
提前致谢。
答案 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,那么你可以去了)