容器互相連線
建立網路介面
docker network create -d <介面驅動 Driver> <介面名稱 Name>
介面驅動
- bridge
- overlay
指令
docker network create -d bridge my-network
目前所有網路介面
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
0d3e1401d7cf bridge bridge local
e6874a337aae host host local
5a17e1d50e2d my-network bridge local
c724e3ea2870 none null local
1. 啟動容器,名稱為 my_container_a,使用 my-network 網路介面
使用 --network
參數可以指定網路介面
docker run -it --rm --name my_container_a --network my-network ubuntu sh
安裝 ping 套件
容器基本上沒有安裝任何的其它套件,我們需要 ping 套件讓我們可以去確認可以連線到其他容器,所以需要額外安裝 ping 套件
$ apt-get update
$ apt-get install iputils-ping
2. 啟動容器,名稱為 my_container_b,使用 my-network 網路介面
docker run -it --rm --name my_container_b --network my-network ubuntu sh
安裝 ping 套件
$ apt-get update
$ apt-get install iputils-ping
Ping 其他容器
ping my_container_a
PING my_container_a (172.18.0.2) 56(84) bytes of data.
64 bytes from cf56372437f2 (172.18.0.2): icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from cf56372437f2 (172.18.0.2): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from cf56372437f2 (172.18.0.2): icmp_seq=3 ttl=64 time=0.067 ms
64 bytes from cf56372437f2 (172.18.0.2): icmp_seq=4 ttl=64 time=0.046 ms
ping my_container_b
PING my_container_b (172.18.0.3) 56(84) bytes of data.
64 bytes from my_container_b.my-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.081 ms
64 bytes from my_container_b.my-net (172.18.0.3): icmp_seq=2 ttl=64 time=0.118 ms
64 bytes from my_container_b.my-net (172.18.0.3): icmp_seq=3 ttl=64 time=0.078 ms
64 bytes from my_container_b.my-net (172.18.0.3): icmp_seq=4 ttl=64 time=0.118 ms
如果你有多個容器需要互相連線,可以使用 Docker Compose。