技術漫談|docker overlay網絡實現

內置跨主機的網絡通信一直是Docker備受期待的功能,在1.9版本之前,社區中就已經有許多第三方的工具或方法嘗試解決這個問題,例如Macvlan、Pipework、Flannel、Weave等。

雖然這些方案在實現細節上存在很多差異,但其思路無非分為兩種:

技術漫談|docker overlay網絡實現

容器在兩個跨主機進行通信的時候,是使用overlay network這個網絡模式進行通信;如果使用host也可以實現跨主機進行通信,直接使用這個物理的ip地址就可以進行通信。overlay它會虛擬出一個網絡比如10.0.2.3這個ip地址。在這個overlay網絡模式裡面,有一個類似於服務網關的地址,然後把這個包轉發到物理服務器這個地址,最終通過路由和交換,到達另一個服務器的ip地址。

技術漫談|docker overlay網絡實現

要實現overlay網絡,我們會有一個服務發現。比如說consul,會定義一個ip地址池,比如10.0.2.0/24之類的;上面會有容器,容器的ip地址會從上面去獲取。獲取完了後,會通過ens33來進行通信,這樣就實現跨主機的通信。

技術漫談|docker overlay網絡實現

修改它的啟動參數,這裡的ip等要修改成自己的。

技術漫談|docker overlay網絡實現

修改完後,需要重啟。

技術漫談|docker overlay網絡實現

查看重啟後是否啟動成功。

技術漫談|docker overlay網絡實現

在第一臺主機上創建一個consul。

技術漫談|docker overlay網絡實現

查看啟動是否成功。

技術漫談|docker overlay網絡實現

創建完後通過瀏覽器訪問一下,可以看到這兩臺會自動註冊上來,這樣的話這兩個主機之間就會進行通信。

技術漫談|docker overlay網絡實現

在第一臺主機上創建一個overlay網絡。

技術漫談|docker overlay網絡實現

這邊自動回進行通步,因為使用的是同一個服務器發件。

技術漫談|docker overlay網絡實現

創建一個使用overlay網絡的容器。

技術漫談|docker overlay網絡實現

查看是否創建成功。

技術漫談|docker overlay網絡實現

登陸進去查看ip地址是否是10.0.2.0的網段。

技術漫談|docker overlay網絡實現

它也具備一個nat網絡模式。

技術漫談|docker overlay網絡實現

在另一臺機器上面同樣創建一個overlay網路的容器。

技術漫談|docker overlay網絡實現

查看ip地址。

技術漫談|docker overlay網絡實現

查看client1和client2的容器網絡是否可以互通。

技術漫談|docker overlay網絡實現

到此, 在client2主機上的容器可以直接互通。我們這裡實現了跨主機通信,是通過overlay network這種網絡模式進行通信的。



分享到:


相關文章: