docker容器跨主機互聯小實驗
環境:
兩臺通過vmware虛擬出來的主機
執行centos7作業系統
前面講的通過link命令實現容器之間的互聯,然而link命令只能實現單個主機中各個容器之間的連線。如果需要在不同的主機之間實現連線,必須通過其他的方式。
docker安裝之後會預設建立一個名為docker0的虛擬網橋,當建立容器的時候會建立一組veth pair介面。這對介面一端在容器中,稱為eth0,另一端被掛載到了docker0網橋上,以veth開頭,這樣主機就可以和容器之間進行通訊。
跨主機的情況下可以通過linux的路由機制來解決
1.在第一臺主機上修改Docker0的網路地址。
修改方式可以參考:
http://blog.csdn.net/lin521lh/article/details/78470732
2.在左邊的主機上新增路由規則:
route add -net 172.18.0.0/16 gw 192.168.18.128
同樣的在右邊的主機上新增路由規則:
route add -net 172.17.0.0/16 gw 192.168.18.130
3.重新設定防火牆
iptables -F ;
iptables -t nat -F
兩個容器之間可以相互ping通。
資料包的傳送流程:
Container(右)->docker0(右)->eth0(右)->eth0(左)->docker0(左)->container(左)