我们在上篇文章说了Docker在单个Docker daemon(即是单主机)模式下面的时候网络默认为Bridge,既然提到了单个Docker daemon,那么多主机即是集群的模式的情况下呢?在这种模式下Docker默认使用Overlay网络来进行容器间的通信。
接下来我们看看我们在加入一个集群或者初始化一个集群的时候会发生什么事情,下面这段话来自官方文档:
- 首先一个名
ingress
的overlay网络被创建,这样在你没有指定网络的情况下你的集群中的services(你可以理解为一个container,实际上它为多个重复的container,是集群中的一个概念)会自动连接到这个网络。这样集群中的services通过这个网络进行通信。 - 然后一个名叫
docker_gwbridge
的网桥被建立,这个网桥用来连接在这个网络中的Docker daemon
所以由以上可知,逻辑上我们都处于一个叫ingress的overlay网络上,实际上Docker daemon之间的通信还是通过一个叫docker_gwbridge的网桥进行的。每个services或者container同时能够加入很多个网络,但是它们只能和连接在同一个网络上的其他service或者container进行通信。
建立一个Overlay网络
当我们要建立一个overlay网络的时候有几个前提:
- 必须要打开必要的端口让网络能进行通信,比如必须打开2377端口的TCP、7946端口的TCP和UDP以及4789端口UDP,这都是进行通信必要的
- 在你创建你自己的overlay网络之前,你必须加入一个集群或者是初始化一个集群
准备工作做好后,我们用$ docke