docker从零开始网络Macvlan

Posted benjamin77

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker从零开始网络Macvlan相关的知识,希望对你有一定的参考价值。

使用Macvlan网络

预计阅读时间: 3分钟

某些应用程序,尤其是遗留应用程序或监视网络流量的应用程序,希望直接连接到物理网络。在这种情况下,您可以使用macvlan网络驱动程序为每个容器的虚拟网络接口分配MAC地址,使其看起来像是直接连接到物理网络的物理网络接口。在这种情况下,您需要在Docker主机上指定一个物理接口,用于Macvlan,以及Macvlan的子网和网关。您甚至可以使用不同的物理网络接口隔离Macvlan网络。请记住以下事项:

  • 由于IP地址耗尽或“VLAN传播”,很容易无意中损坏您的网络,在这种情况下,您的网络中有大量不同的唯一MAC地址。
  • 您的网络设备需要能够处理“混杂模式”,其中一个物理接口可以分配多个MAC地址。
  • 如果您的应用程序可以使用桥接器(在单个Docker主机上)或覆盖层(跨多个Docker主机进行通信),那么从长远来看,这些解决方案可能会更好。

创建一个macvlan网络

创建Macvlan网络时,它可以处于桥接模式或802.1q干线桥接模式。

  • 在桥接模式下,Macvlan流量通过主机上的物理设备。

  • 在802.1q中继桥接模式下,流量通过Docker在运行中创建的802.1q子接口。这使您可以在更细粒度的级别上控制路由和筛选。

桥接模式

要创建与给定物理网络接口桥接的Macvlan网络,请使用--driver macvlandocker network create命令。您还需要指定parent,这是流量将在Docker主机上实际通过的接口。 网络名称是pub_net

[[email protected] ~]# docker network create -d macvlan --subnet=172.16.86.0/24 --gateway=172.16.86.1 -o parent=eth0 pub_net
7479d90651e92d8971916e678dceaad5c6deb845b7af30802b028afa022c98d0

如果您需要排除在Macvlan网络中使用的IP地址,例如当已使用给定的IP地址时,请使用--aux-addresses

$ docker network create -d macvlan    --subnet=192.168.32.0/24    --ip-range=192.168.32.128/25   --gateway=192.168.32.254    --aux-address="my-router=192.168.32.129"   -o parent=eth0 macnet32

192.168.32.128/25      意思就是地址范围从 192.168.32.128   255.255.255.128   网络名称是macnet32

 

802.1q中继桥接模式

如果指定parent包含点接口名称,例如eth0.50,Docker将其解释为子接口eth0并自动创建子接口。

[[email protected] ~]# docker network create -d macvlan 
--subnet=192.168.50.0/24
--gateway=192.168.50.1
-o parent=eth0.50 macvlan50 cd6369cc9f81ca163f1fcd6b7f36db61276f0f750133e0f8812ce56697874cdc

使用ipvlan而不是macvlan

在上面的示例中,您仍在使用L3网桥。您可以使用ipvlan ,然后获得L2桥接。指定-o ipvlan_mode=l2

使用ipvlan而不是macvlan

在上面的示例中,您仍在使用L3网桥。您可以使用ipvlan ,然后获得L2桥接。指定-o ipvlan_mode=l2。 需要下载第三方插件

$ docker network create -d ipvlan     --subnet=192.168.210.0/24     --subnet=192.168.212.0/24     --gateway=192.168.210.254      --gateway=192.168.212.254       -o ipvlan_mode=l2 ipvlan210

使用IPv6

如果已将Docker守护程序配置为允许IPv6,则可以使用双栈IPv4 / IPv6 Macvlan网络。

[[email protected] ~]# docker network create -d macvlan
> --subnet=192.168.216.0/24 --subnet=192.168.218.0/24
> --gateway=192.168.216.1 --gateway=192.168.218.1
> --subnet=2001:db8:abc8::/64 --gateway=2001:db8:abc8::10
> -o parent=eth0.218
> -o macvlan_mode=bridge macvlan216
65a2dc885f5dd2778089ba636a2dc1050331a4f83f2b2ff3f509e6df5b348a3d

技术分享图片

 

 

以上是关于docker从零开始网络Macvlan的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器之macvlan网络

docker网络之macvlan

docker中macvlan网络模式

创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)

Docker Macvlan网络部署

VMWare Workstation 配置docker多macvlan网络方法