Fabric多机部署前的Docker通信机制了解

Docker容器通信主要分为以下几类:

  • 容器和主机通信
  • 同一主机上两个容器的通信
  • 跨主机的两个容器的通信

首先,当Dokcer安装完成后,它会在主机安装一块虚拟网卡docker0,使用命令

ifconfig

查看网卡

ifconfig

所以本机所有的容器都是在172.17.0.1网段下,这个很重要,可以理解为是主机在容器局域网的IP地址。
docker局域网

整个Docker网络通信机制如上图所示,当容器创建时,Docker会随机分配该网段下的一个IP地址。

容器与主机通信

显然,容器与主机通信不能通过localhost:127.0.0.1网址,而应该是docker0:172.17.0.1

同一主机上两个容器的通信

可以使用该网段下分配的IP地址进行通信,但这是静态的,当容器重新创建后,IP地址也会发生变化。因此可以采用bridge模式,通过容器名进行通信。这种方式请自行查阅资料。

跨主机的两个容器的通信

通过主机的本地IP进行通信,即10.10.45.66->10.10.45.67。在容器创建时,可以指定extra_hosts字段需要通信的主机容器名与IP的绑定,容器启动后会写入其hosts文件中,通过容器名即可通信。

docker-compose环境变量的设置

由于主机数量的不足,我们通常会一台主机部署多个Fabric容器,因此端口必须设置清楚。假设一台主机上部署两个peer容器,因为peer容器的监听端口为7051,链码监听端口为7052,事件监听端口为7053,因此一台主机上有两个peer容器时,外部访问会发生冲突。

端口设置

ports字段,peer1设置端口7051和主机的8051绑定,但是内部仍要指定为7051,因为同一主机上的两个容器的IP是不同的,所以不用担心端口冲突,只有跨主机通信时是需要考虑的。

你可能感兴趣的:(Fabric多机部署前的Docker通信机制了解)