1、直接路由
通過在主機中添加靜態路由來實現跨主機通信。如果有兩台主機host1和host2,兩主機上的docker容器是兩個獨立的二層網絡,將con1發往con2的數據流先轉發到主機host2上,再由host2轉發到其上的docker容器中,反之亦然。
由於使用容器的IP進行路由,就需要避免不同主機上的docker容器使用相同沖突的IP,所有應該為不同的主機分配不同的IP子網。
#主機A上:192.168.187.143,主機B:192.168.187.144 #S1:添加網卡docker0,我們這里為了區別docker默認的網卡docker0,使用其他名字br0 brctl addbr br0 #S2:配置網卡,添加路由 ifconfig br0 172.17.1.1/24 up ip route add 172.17.2.0/24 via 192.168.187.144 #主機B的IP地址 #S3:啟動docker服務 service docker stop docker daemon -b=br0
#S4:啟動一個容器
docker run -it ubuntu:14.04 bash
#S5:進入容器,其IP地址應該為172.17.1.2
#主機B上:192.168.187.144 #S1:添加網卡docker0,我們這里為了區別docker默認的網卡docker0,使用其他名字br0 brctl addbr br0 #S2:配置網卡,添加路由 ifconfig br0 172.17.2.1/24 up ip route add 172.17.1.0/24 via 192.168.187.143 #主機A的IP地址 #S3:啟動docker服務 service docker stop docker daemon -b=br0
#S4:啟動一個容器
docker run -it ubuntu:14.04 bash
#S5:進入容器,其IP地址應該為172.17.2.2
ping 172.17.1.2 #成功通信