Docker容器之macvlan网络

docker ginotang 2922℃ 0评论

简介

Macvlan网络通过为物理网卡额外添加MAC地址的形式来复用物理网卡,也就是说Macvlan网络直接使用服务器上的网卡,这是它的一个缺点。一般旧式的docker应用或者直接监控网卡流量的应用才会使用这种网络方案。

Macvlan有如下特点

  • 容易对服务器网络产生不良影响。由于它直接使用物理网卡,网卡对于服务器来说是稀缺资源,因此Macvlan的扩展性差
  • Macvlan挂在vlan下面。即网卡的自网卡,即使这样,vlan的数目最多也就是4000左右,对于数据中心来说依然是严重不足的。
  • 网卡必须支持混杂模式。只有混杂模式下的网卡才支持多MAC地址

使用Macvlan网络

可以通过两种方式创建Macvlan,第一种是直接使用物理网卡(bridge mode),第二种是使用vlan(802.1q trunk bridge mode)。网络结构如下:

docker macvlan network

Bridge Mode

通过docker network create命令的参数指定驱动(–driver)类型为maclan即可创建Macvlan网络;在创建的时候,我们无需手动为网卡添加MAC地址,但是必须明确指定使用的subnet和gateway,且指明使用的父网卡。

以下命令在两台主机上执行,创建名为mvnet的macvlan网络

创建容器并指定网络为mvnet

为了避免自动分配IP地址造成的IP地址冲突,采用静态分配IP地址

进入busybox1测试网络

使用IP地址ping busybox2,可以正常连通,但使用名称则不通,说明macvlan不提供DNS解析。

802.1q trunk bridge mod

基于vlan的macvlan创建过程和上面的一样,不同的只是父网卡是一个子网卡

以下命令在两台主机上执行

注意parent=enp2s0.20,我们不需要自己创建这个子网卡,当上面的命令执行完毕,会自动为我们创建好这个设备

使用方法也是一样

不同网段之间的通讯

不同网段之间的容器默认不能互相通讯,即172.19.0.0/24172.20.0.0/24默认是两个隔离的网络,如果要两个网络可以通讯,必须配置系统的iptalbes转发数据。

总结

macvlan的使用十分简单

  • 它直接使用服务器的物理网卡作为媒介通讯
  • 可绑定到vlan
  • 网络创建的过程必须显式指定subnet和gateway
  • 通讯双方的网段必须一致
  • 创建容器的时候最好手动分配IP地址,避免IP地址冲突

转载请注明:Pure nonsense » Docker容器之macvlan网络

喜欢 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x