这是关于如何在CoreOS上设置VLAN的问题的补充[ CoreOS裸机vlannetworking 。 我之后的问题是在你设置好之后,你如何使用它?
你如何启动一个容器,将该容器的以太网接口放入其中一个特定的VLAN中?
警告:下面的HACKS!
networking(今天)在Docker内部有些尴尬,所以我们需要弥补很多代表用户的假设。 为此,您需要为接口创build一个桥接接口,然后通过--lxc-conf选项以类似于此答案的方式传递configuration。
作为一个例子(注意,这可能不会直接被复制/粘贴,我从记忆中回想起来):
首先我们在VLAN800上的eth0上configuration一个子接口:
/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的其他设备创build一个桥接:
/etc/sysconfig/network/20-br800.netdev :
[NetDev] Name=br800 Kind=bridge
然后我们将之前创build的子接口附加到桥上:
/etc/sysconfig/network/50-eth0-800.netdev :
[Match] Name=eth0.800 [Network] Bridge=br800
现在我们处于一个状态,我们需要在主机上configurationnetworking,并且可以执行如下操作:
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]
理想情况下,我们不必为了以这种方式进行networking设置而做太多黑客攻击,但是这会导致能够创build连接到不同VLAN的多个网桥,并将来自不同容器的stream量分开,并强制它通过某个上游路由器。