Docker的跨主机网络访问(不同宿主机上的容器之间的通信)

  • Post author:
  • Post category:其他


1.跨主机网络解决方案

docker原生的overlay和macvlan

第三方的flannel、weave、calico

众多网络方案是如何与docker集成在一起的?

libnetwork docker容器网络库

CNM (Container Network Model)这个模型对容器

在这里插入图片描述

在这里插入图片描述

2.macvlan网络方案的实现

Macvlan是一个新的尝试,是真正的网络虚拟化技术的转折点。

Linux实现非常轻量级,因为与传统的Linux Bridge隔离相比,

它们只是简单地与一个Linux以太网接口或子接口相关联,以实现网络之间的分离和与物理网络的连接。

Macvlan提供了许多独特的功能,并有充足的空间进一步创新与各种模式。

这些方法的两个高级优点是绕过Linux网桥的正面性能以及移动部件少的简单性。

删除传统上驻留在Docker主机NIC和容器接口之间的网桥留下了一个非常简单的设置,包括容器接口,直接连接到Docker主机接口。

由于在这些情况下没有端口映射,因此可以轻松访问外部服务。

3.实验准备

(1)两台虚拟机

(2)两台虚拟机上添加两块虚拟网卡,并安装好相应的docker服务(因为我们模拟的是docker容器的跨主机访问)

清除两台主机上之前有关网络的设置,并激活新添加的网卡eth1。

在这里插入图片描述

在这里插入图片描述

激活网卡eth1,并且开启混杂模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


注意:如果不开启混杂模式,会导致macvlan网络无法访问外界

具体在不使用vlan时,表现为无法ping通路由,无法ping通同一网络内其他主机


在两台主机上各创建macvlan网络


创建macvlan网络不同于桥接模式,需要指定网段和网关(因为要保证跨主机上网段和网关是相同的),并且都得是真实存在的



server1:


docker network create -d macvlan –subnet 172.20.0.0/24 –gateway 172.20.0.1 -o parent=eth1 mac_net1

在这里插入图片描述


server2


在这里插入图片描述


macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络

vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094

在两台主机上分别使用创建的macvlan1运行一个容器


server1:


docker run -it –name vm1 –network=mac_net1 –ip=172.20.0.10 ubuntu

在这里插入图片描述


server2:


docker run -it –name vm1 –network=mac_net1 –ip=172.20.0.11 ubuntu

在这里插入图片描述


访问测试

:sever2容器vm2中ping server1的vm1容器

在这里插入图片描述


其实这就实现了不同宿主机上的容器之间的通信

macvlan模式不依赖网桥,所以brctl show查看并没有创建新的bridge

但是查看容器的网络,会看到虚拟网卡对应了一个interface是43


在这里插入图片描述


查看宿主机的网络,43正是虚机的eth1网卡


在这里插入图片描述


可见,容器的 eth0 就是宿主机的eth1通过macvlan虚拟出来的interface

容器的interface直接与主机的网卡连接,这种方案使得容器无需通过NAT和端口映射就能与外网直接通信(只要有网关)

在网络上看起来与其他独立主机没有区别


macvlan会独占主机的网卡的解决方案


前面说过macvlan会独占主机网卡,容器可以有很多,但实际上机器不可能有那么多网卡,所以可以使用vlan子接口实现多macvlan网络

vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094

我们只需要在创建容器时使用vlan子接口就可以i解决:

在这里插入图片描述


在server1上


在这里插入图片描述

在这里插入图片描述


在server2上


在这里插入图片描述


在server2上


在这里插入图片描述


在server1上


在这里插入图片描述


这样就实现了不同宿主机上的容器之间的通信,也解决了独占网卡的问题



版权声明:本文为Rapig1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。