这是关于如何在 CoreOS 上设置 VLAN 的问题的补充 [CoreOS裸机VLAN网络。我的问题是,设置完成后,如何使用它?
如何启动一个容器,并将其以太网接口放入某个特定 VLAN?
答案1
警告:前方有黑客攻击!
Docker 内部的网络(目前)有点尴尬,所以我们需要弥补用户做出的许多假设。为此,您需要为接口创建一个桥接接口,然后--lxc-conf
以类似于以下方式通过选项传递配置这回答。
举个例子(注意,这很可能不能直接复制/粘贴。我只是从记忆中复述这个):首先,我们配置一个位于 VLAN800 上的
子接口:eth0
/etc/sysconfig/network/05-eth0.netdev
:
[Match]
Name=eth0.800
[Network]
Address=192.168.20.25/24
Gateway=192.168.20.1
DNS=192.168.1.1
VLAN=800
接下来我们创建一个桥梁其他需要访问该 VLAN 的设备:
/etc/sysconfig/network/20-br800.netdev
:
[NetDev]
Name=br800
Kind=bridge
然后我们将之前创建的子接口附加到桥上:
/etc/sysconfig/network/50-eth0-800.netdev
:
[Match]
Name=eth0.800
[Network]
Bridge=br800
现在我们已经在主机上配置了我们想要的网络,可以执行以下操作:
docker run \
--net="none" \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.ipv4 = 192.168.20.30/24" \
--lxc-conf="lxc.network.ipv4.gateway = 192.168.20.1" \
--lxc-conf="lxc.network.link = br800" \
--lxc-conf="lxc.network.name = eth0" \
--lxc-conf="lxc.network.flags = up" \
-d [Docker Image ID]
理想情况下,我们不必进行太多黑客攻击就可以以这种方式设置网络,但是这可以创建连接到不同 VLAN 的多个网桥并分割来自不同容器的流量并强制其通过某些上游路由器。