0

まず、ip コマンドに基づくタグを使用して VXLAN インターフェイスを作成することを認識しています。

ip link add vxlan-br0 type vxlan id <tag-id> group <multicast-ip> local <host-ip> dstport 0

しかし、それは私の実際の要求には役に立ちません。私の要求は、次のような異なるタグを使用して複数の Docker コンテナーを分離することです。

brctl addif br1 veth111111 tag=10 # veth111111 is the netdev used by docker container 1 brctl addif br1 veth222222 tag=20 # veth222222 is the netdev used by docker container 2 brctl addif br1 veth333333 tag=10 # veth111111 is the netdev used by docker container 3

コンテナ 2 をコンテナ 1 と 3 から分離したいのですが、コンテナ 1 と 3 の間の通信を分離したくありません。これを達成するにはどうすればよいですか?

4

1 に答える 1

0

2 つのブリッジネットワークを追加すると、分離が実現します。

docker create network net1
docker create network net2

次に、いくつかのコンテナを起動します

docker run -d --name one --net net1 busybox sleep 600
docker run -d --name two --net net2 busybox sleep 600
docker run -d --name three --net net1 busybox sleep 600

onethree同じブリッジに接続されているため、通信します

docker exec one ping three
docker exec three ping one

ネットワーク/ブリッジを通過するときに失敗するものもあります

docker exec one ping two
docker exec two ping one
docker exec three ping two

docker はネットワーク内でホスト/名前解決を提供することに気付くでしょう。実際には、上記で失敗しているのはホスト名解決です。IP もブリッジ間でルーティングされません。

$ docker exec three ip ad sh dev eth0
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:14:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe14:3/64 scope link 
       valid_lft forever preferred_lft forever

ピンtwo

$ docker exec three ping -c 1 -w 1 172.21.0.2
PING 172.21.0.2 (172.21.0.2): 56 data bytes

--- 172.21.0.2 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss

ピンone

docker exec three ping -c 1 -w 1 172.20.0.2
PING 172.20.0.2 (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.044 ms

このセットアップはオーバーレイ ネットワーク ドライバーでも機能しますが、セットアップがより複雑になります。

于 2016-06-10T05:27:25.117 に答える