1. 单向通信

     为什么需要单向通信,例如web服务器和数据库之间,一般都是web服务器去访问数据库,而不会出现数据库去访问web服务器的情况,这就是单向通信。

     默认情况下,如果docker的网络模式是bridge的话,在启动容器的时候,容器之间是能够互相访问的,但是如果容器的ip发生了变化,那么原有容器之间的访问关系可能发生变化。例如服务器的ip是172.17.0.1, 其要访问数据库的ip为172.17.0.2,正常访问没有问题,如果某一天因为某种原因系统为数据库重新分配了新的ip,那么我们就需要修改服务器和数据库的ip对应关系,如果涉及到非常多的容器的话,那么修改就会非常繁琐且容易出错。在这里可以通过--link 容器名称 来建立单向通信,而不管容器名称背后的ip如何变化

     首先启动三个容器centos,centos1,centos2,其中centos1和centos2通过--link参数与centos建立单向连接:

     Docker通信_服务器

 

     然后查看centos的ip地址(172.17.0.2)

     Docker通信_web服务器_02

 

     接着分别进入centos1和centos2,是能够ping通centos的。

     Docker通信_web服务器_03        Docker通信_数据库_04

 

 

2. 双向通信

   使用网桥建立双向连接: docker network create -d bridge my-bridge

    Docker通信_单向通信_05

 

      目前有连个容器centos3和centos4, 把这两个容器连接到新建的网桥mybridge

     Docker通信_服务器_06

 

     然后分别进入这两个容器,互ping

    Docker通信_web服务器_07

 

   至此大功告成。