用图表来解释可能更容易,所以这是基本设置:
有 2 个容器10.0.0.1&10.0.0.2在主机中运行,并且我还创建了一个 Linux 桥接器br0。
每个容器都将其自己的网络接口视为 eth0,但主机将其视为vethxxx。看基本设置中的图片,容器之间没有任何连通性。
我可以做最简单的方法是使用brctl 添加,他们将能够立即进行交流,但这并不是我想要的。
我想做能够更精细地控制容器之间的转发;模拟托管交换机br0由主机控制。如果这些是物理机器,我相信可以使用 nmcli 完成此操作,如下所示:
nmcli connection add type ethernet slave-type bridge con-name br0-port1 ifname <port name> master br0
然后将机器的电缆连接到该命令中使用的端口。
有没有办法可以有效地虚拟实现相同的设置(如图#3所示)?
答案1
您不能将 veth 接口“附加”到桥接端口;您可以做了通过将桥接端口添加到桥接中,可添加桥接端口。
veth 接口实际上是连接两个端口的虚拟以太网电缆。在容器环境中,通常使用的方式是“电缆”的一端位于eth0
容器内部,另一端作为桥接端口添加,因此最终会得到:
Linux 桥接设备做充当托管交换机,你可以配置每个端口的 VLAN,每个端口的控制stp等等。