一、簡介
默認情況下容器與容器、容器與宿主機的網絡是隔離開來的,
當你安裝docker的時候,docker會創建一個橋接器docker0,通過它才讓容器與容器、容器與宿主機之間通信。
Docker安裝的時候默認會創建三個不同的網絡,你可以通過命令查看這些網絡。
二、默認網絡
None Network
網絡模式為none的,即不會為容器創建任何的網絡環境。
一旦Docker Container采用了none網絡模式,那么容器內部就只能使用loopback網絡設備,不會再有其他的網絡資源。
Host Network
如果你在創建容器的時候使用--network=host
選項,那么容器會使用宿主機的網絡,容器與宿主機的網絡並沒有隔離。
使用這種網絡類型的好處就是網絡性能很好,基本上跟宿主機的網絡一樣,它很大的弊端就是不安全。
你可以在容器中更改宿主機的網絡,如果你的程序是用root用戶運行的,有可能會通過Docker容器來控制宿主機的網絡。
當我們在容器中執行類似ifconfig命令查看網絡環境是,看到的都是宿主機上的信息。
Bridge Network
橋接網絡是默認的網絡類型,我們可以使用下面的命令來查看默認的網絡配置信息。
這兒橋接的網絡名為docker0
。當我們啟動一個容器的時候,每個容器會有它自己的虛擬網絡接口連接到docker0
,並獲得一個IP地址。
更多參考 >>> Docker Network入門用法
三、自定義網絡
建議使用自定義的網橋來控制哪些容器可以相互通信,還可以自動DNS解析容器名稱到IP地址。
Docker提供了創建這些網絡的默認網絡驅動程序,你可以創建一個新的 Bridge網絡,Overlay網絡 或 Macvlan網絡。
你還可以創建一個網絡插件或遠程網絡進行完整的自定義和控制。
你可以根據需要創建任意數量的網絡,並且可以在任何給定時間將容器連接到這些網絡中的零個或多個網絡。
此外,你可以連接並斷開網絡中的運行容器,而無需重新啟動容器。當容器連接到多個網絡時,其外部連接通過第一個非內部網絡以詞法順序提供。
更多參考 >>> Docker:網絡模式詳解
四、集群網絡
Overlay networks
管理 Swarm 中 Docker 守護進程間的通信。你可以將服務附加到一個或多個已存在的 overlay
網絡上,使得服務與服務之間能夠通信。
更多參考 >>> Swarm使用原生的overlay網絡
Ingress network
是一個特殊的 overlay
網絡,用於服務節點間的負載均衡。
當任何 Swarm 節點在發布的端口上接收到請求時,它將該請求交給一個名為 IPVS
的模塊。IPVS
跟蹤參與該服務的所有IP地址,選擇其中的一個,並通過 ingress
網絡將請求路由到它。
初始化或加入 Swarm 集群時會自動創建 ingress
網絡,大多數情況下,用戶不需要自定義配置,但是 docker 17.05 和更高版本允許你自定義。
Docker_gwbridge
是一種橋接網絡,將 overlay
網絡(包括 ingress
網絡)連接到一個單獨的 Docker 守護進程的物理網絡。
默認情況下,服務正在運行的每個容器都連接到本地 Docker 守護進程主機的 docker_gwbridge
網絡。
docker_gwbridge網絡在初始化或加入 Swarm 時自動創建。大多數情況下,用戶不需要自定義配置,但是 Docker 允許自定義。
更多參考 >>> Docker Swarm網絡管理
作者:Leozhanggg
出處: https://www.cnblogs.com/leozhanggg/p/12061435.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。