我的Linux主机有8个以太网接口,eth0 - eth7.我正在这个Linux主机上运行三个Docker1.9容器。
如何将一个Docker容器内的网络接口与主机上第三层(IP层)上的特定Linux物理网络接口(例如eth5)相关联?
在第三层连接的原因是:
和
基本上,如何将Docker网络接口连接到第3层/第2层的特定Linux(主机)网络设备(例如eth5)?
发布于 2016-06-01 22:50:57
有多种方法可以做到这一点:
MACVLAN和IPVLAN都支持Linux内核模块。
MACVLAN:这使得创建“紧抓”物理网络接口的虚拟网络接口成为可能(eth5在上面的问题中)。每个虚拟接口都有自己的MAC地址--与物理接口的MAC地址不同。发送到或从虚拟接口发送的帧被映射到物理接口。
虽然在Linux下,接口可以有多个地址,但MACVLAN允许进一步隔离在这种接口上可以看到的通信量。MACVLAN将只能看到具有与该接口匹配的MAC地址的通信量,从而防止其他接口上的进程/容器侦听发送到另一个MACVLAN的通信量。
IPVLAN:概念上非常类似于macvlan驱动程序,但有一个主要的例外,就是使用L3在从站之间复制/demuxing。主设备与其从设备共享L2 MAC。这允许在主接口之外创建虚拟设备,并且包是基于分组上的L3 IP地址传送的。所有接口(包括主接口)共享L2,使其对连接的L2交换机透明。
对于IPVLAN,规范文档是:https://github.com/torvalds/linux/blob/master/Documentation/networking/ipvlan.txt
目前,Docker在实验版本中同时支持MACVLAN和IPVLAN,它们很快就会进入GA。
有关MACVLAN和IPVLAN (包括特定命令)的更多信息,请参阅布伦特·索尔兹伯里的优秀博客:http://networkstatic.net/configuring-macvlan-ipvlan-linux-networking/
https://serverfault.com/questions/743621
复制相似问题