添加兩個橋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
one
和three
交流會,因爲它們連接到相同的橋
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工作以及但是這是比較複雜的設置。
一個很好的理想。但是,這種方法需要創建O(| Group |)橋。在最壞的情況下,| Group | = |容器|。你知道可以在一臺主機上創建最大數量的網橋嗎?是否有任何解決方案可以創建常用O(1)網橋,並使用VXLAN標籤隔離不同的組? – ghostplant
@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