web-dev-qa-db-ja.com

CoreOS-特定のVLANでDockerコンテナを起動する

これは、CoreOSでVLANをセットアップする方法に関するこの質問への追加です[ CoreOSベアメタルVLANネットワーキング 。後の私の質問は、これを設定した後、どのように使用しますか?

そのコンテナのイーサネットインターフェイスをそれらの特定のVLANの1つに配置するコンテナをどのように開始しますか?

1
gar

警告:先にハック!

ネットワーキング(今日)はDockerの内部では少し厄介なので、ユーザーに代わって行われた多くの仮定を補う必要があります。これを行うには、インターフェイスが実際に配置されるブリッジインターフェイスを作成し、 this answerと同様の方法で--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にアクセスする必要があるotherデバイス用のブリッジを作成します。

/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に接続された複数のブリッジを作成し、異なるコンテナからのトラフィックをセグメント化して、アップストリームルーターを通過させることができます。 。

2
Brian Redbeard