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
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: 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
このセットアップはオーバーレイ ネットワーク ドライバーでも機能しますが、セットアップがより複雑になります。