2016-06-10 45 views
0

首先,我知道基於ip命令創建帶有標籤的VXLAN接口:如何VXLAN標籤添加到隔離不同的組Docker容器

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

但它是無用的我的實際需求,我的要求是使用不同的標籤來隔離多個泊塢窗的容器,是這樣的:

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

我想從容器1和3隔離容器2,不要孤立通信BEW青少年容器1和3.如何實現這一目標?

回答

0

添加兩個橋networks將提供隔離。

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: [email protected]: <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 

這樣的設置將與overlay networking driver工作以及但是這是比較複雜的設置。

+0

一個很好的理想。但是,這種方法需要創建O(| Group |)橋。在最壞的情況下,| Group | = |容器|。你知道可以在一臺主機上創建最大數量的網橋嗎?是否有任何解決方案可以創建常用O(1)網橋,並使用VXLAN標籤隔離不同的組? – ghostplant

+0

@ghostplant對於單容器隔離,在默認網絡上使用'--icc = false'。一個網橋具有1023個接口的限制。顯然事情開始[Linux在過去的9600接口中變慢](https://support.cumulusnetworks.com/hc/en-us/articles/216420547-Calculating-the-Limitation-of-a-Linux-Bridge-In-Traditional - 模式),但我從來沒有把網絡推到那麼遠。你應該獲得比你在橋上接口更多的橋接器和接口。我也會提醒你不要使用定製網絡,這樣你就可以輕鬆地使用Docker工具,例如撰寫,羣集,Kuberenetes,ECS等。 – Matt

相關問題