技术漫谈|docker overlay网络实现

内置跨主机的网络通信一直是Docker备受期待的功能,在1.9版本之前,社区中就已经有许多第三方的工具或方法尝试解决这个问题,例如Macvlan、Pipework、Flannel、Weave等。

虽然这些方案在实现细节上存在很多差异,但其思路无非分为两种:

技术漫谈|docker overlay网络实现

容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信;如果使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.2.3这个ip地址。在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。

技术漫谈|docker overlay网络实现

要实现overlay网络,我们会有一个服务发现。比如说consul,会定义一个ip地址池,比如10.0.2.0/24之类的;上面会有容器,容器的ip地址会从上面去获取。获取完了后,会通过ens33来进行通信,这样就实现跨主机的通信。

技术漫谈|docker overlay网络实现

修改它的启动参数,这里的ip等要修改成自己的。

技术漫谈|docker overlay网络实现

修改完后,需要重启。

技术漫谈|docker overlay网络实现

查看重启后是否启动成功。

技术漫谈|docker overlay网络实现

在第一台主机上创建一个consul。

技术漫谈|docker overlay网络实现

查看启动是否成功。

技术漫谈|docker overlay网络实现

创建完后通过浏览器访问一下,可以看到这两台会自动注册上来,这样的话这两个主机之间就会进行通信。

技术漫谈|docker overlay网络实现

在第一台主机上创建一个overlay网络。

技术漫谈|docker overlay网络实现

这边自动回进行通步,因为使用的是同一个服务器发件。

技术漫谈|docker overlay网络实现

创建一个使用overlay网络的容器。

技术漫谈|docker overlay网络实现

查看是否创建成功。

技术漫谈|docker overlay网络实现

登陆进去查看ip地址是否是10.0.2.0的网段。

技术漫谈|docker overlay网络实现

它也具备一个nat网络模式。

技术漫谈|docker overlay网络实现

在另一台机器上面同样创建一个overlay网路的容器。

技术漫谈|docker overlay网络实现

查看ip地址。

技术漫谈|docker overlay网络实现

查看client1和client2的容器网络是否可以互通。

技术漫谈|docker overlay网络实现

到此, 在client2主机上的容器可以直接互通。我们这里实现了跨主机通信,是通过overlay network这种网络模式进行通信的。



分享到:


相關文章: