docker macvlan模式(unraid macvlan)

发布于 2022-12-23  647 次阅读


Macvlan 有以下特点:

  • 可让使用者在同一张实体网卡上设定多个 MAC 地址。
  • 承上,带有上述设定的 MAC 地址的网卡称为子接口(sub interface);而实体网卡则称为父接口(parent interface)。
  • parent interface 可以是一个物理接口(eth0),可以是一个 802.1q 的子接口(eth0.10),也可以是 bonding 接口。
  • 可在 parent/sub interface 上设定的不只是 MAC 地址,IP 地址同样也可以被设定。
  • sub interface 无法直接与 parent interface 通讯 (带有 sub interface 的 VM 或容器无法与 host 直接通讯)。
  • 承上,若 VM 或容器需要与 host 通讯,那就必须额外建立一个 sub interface 给 host 用。
  • sub interface 通常以 mac0@eth0 的形式来命名以方便区別

简单来说 传统的虚拟网卡 docker使用的网卡

bond 是网卡聚合负载均衡

brctl 是桥接 创建网桥

host是直接使用主机的端口

那么有一些docker本身的部署过程种由于存在一定协议 涉及到协议的alg或者http设计到重定向等。此时无论是brctl还是host模式都不是很好用。当然你可以说是docker本身设计问题。

在这个情况下macvlan就有存在的意义了

macvlan说人话来说就是给你机器的mac生成多个虚拟mac 工作模式类似在网卡抓包根据mac地址进行分别给到不同的docker 使得docker存在不同的ip是真正的host模式。

开启macvlan则在后台docker network可以看到相关信息

macvlan后的docker network

如果你的docker重新安装过或者等等不可抗拒因素 在unraid的docker页面无法选择

unraid的macvlan配置

那么说明docker没有开macvlan功能 。该功能要在docker启动时候指定。或者后面再输入命令开启

macvlan使能位置

注意该选项要在docker启动前开启

最后看一下这3种类型的设备再docker总览下的表现

总览

host则是和主机公用端口

br0则是新建macvlan可以理解成单独的设备

bridge则是传统的docker网口直接映射


向日葵没了