Docker网络-MACVLAN

macvlan驱动程序是久经考验的真正网络虚拟化技术的新实现。 Linux实现非常轻巧,因为它们没有使用Linux桥接器进行隔离,而只是与Linux以太网接口或子接口相关联,以实现网络之间的分隔以及与物理网络的连接。

 MACVLAN提供了许多独特的功能。由于具有非常简单和轻巧的体系结构,因此具有积极的性能含义。 MACVLAN驱动程序提供端口和容器之间的直接访问,而不是端口映射。它还允许容器接收物理网络子网上的可路由IP地址。

 macvlan驱动程序使用父接口的概念。该接口可以是物理接口(例如eth0),用于802.1q VLAN标记的子接口(例如eth0.10(代表VLAN 10的.10),甚至可以是将两个以太网接口捆绑为一个逻辑接口的绑定主机适配器。

 在MACVLAN网络配置过程中,需要一个网关地址。网关必须位于网络基础结构提供的主机外部。 MACVLAN网络允许在同一网络上的容器之间进行访问。如果没有在主机外部进行路由,则无法在同一主机上的不同MACVLAN网络之间进行访问。

 

 在此示例中,我们将MACVLAN网络绑定到主机上的eth0。 我们将两个容器连接到mvnet MACVLAN网络,并显示它们可以在它们之间进行ping操作。 每个容器在192.168.0.0/24物理网络子网上都有一个地址,并且它们的默认网关是物理网络中的接口。

#Creation of MACVLAN network "mvnet" bound to eth0 on the host 
$ docker network create -d macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 -o parent=eth0 mvnet


#Creation of containers on the "mvnet" network
$ docker run -itd --name c1 --net mvnet --ip 192.168.0.3 busybox sh
$ docker run -it --name c2 --net mvnet --ip 192.168.0.4 busybox sh
/ # ping 192.168.0.3
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.052 ms

使用MACVLAN的VLAN中继

众所周知,将802.1q中继到Linux主机对于许多操作而言都是痛苦的。 它需要更改配置文件才能通过重新引导保持持久性。 如果涉及网桥,则需要将物理NIC移入网桥,然后网桥将获得IP地址。 macvlan驱动程序通过创建,销毁和主机重新启动来完全管理MACVLAN网络的子接口和其他组件。

 

 使用子接口实例化macvlan驱动程序时,它允许VLAN中继到主机并在L2处分段容器。 macvlan驱动程序会自动创建子接口并将其连接到容器接口。 结果,每个容器将位于不同的VLAN中,除非在物理网络中路由流量,否则它们之间将无法进行通信。

#Creation of  macvlan10 network that will be in VLAN 10
$ docker network create -d macvlan --subnet 192.168.10.0/24 --gateway 192.168.10.1 -o parent=eth0.10macvlan10


#Creation of  macvlan20 network that will be in VLAN 20
$ docker network create -d macvlan --subnet 192.168.20.0/24 --gateway 192.168.20.1 -o parent=eth0.20 macvlan20


#Creation of containers on separate MACVLAN networks
$ docker run -itd --name c1--net macvlan10 --ip 192.168.10.2 busybox sh
$ docker run -it --name c2--net macvlan20 --ip 192.168.20.2 busybox s

在前面的配置中,我们使用macvlan驱动程序创建了两个单独的网络,这些网络被配置为使用子接口作为其父接口。 macvlan驱动程序创建子接口,并将它们连接在主机的eth0和容器接口之间。 必须将主机接口和上游交换机设置为switchport模式中继,以便标记VLAN穿越接口。 可以将一个或多个容器连接到给定的MACVLAN网络,以创建通过L2分段的复杂网络策略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章