Docker默认网络管理
在進行Docker安裝時,Docker就會自動創建三種網絡。客戶端可以通過網絡管理指令進行查看,具體操作指令如下。
$ docker network ls
? 上述指令用于列舉Docker中的所有網絡,執行后的效果如圖1所示。
圖1 Docker默認網絡
從圖1可以看出,Docker中默認的三種網絡分別為bridge、host和none,其中名為bridge的網絡就是默認的bridge驅動網絡,也是容器創建時默認的網絡管理方式,配置后可以與宿主機通信從而實現與互聯網通信功能,而host和none屬于無網絡,容器添加到這兩個網絡時不能與外界網絡通信。
下面通過一個示例來演示默認的bridge網絡管理方式,其執行過程如下。
(1)創建并啟動容器。在終端窗口中執行如下指令。
$ docker run -itd --name=networktest ubuntu
上述指令在后臺啟動了一個鏡像名稱為ubuntu的容器,并為啟動后的容器命名為networktest。
(2)使用網絡查看指令查看網絡詳情,具體操作指令如下。
$ docker network inspect bridge
上述指令用于核查名稱為bridge的網絡詳情,需要指明網絡名稱或者網絡ID,執行上述指令后,效果如圖2所示。
從圖2可以看出,執行上述指令后就會顯示出bridge網絡的所有詳細信息,其中就包括了使用默認的bridge網絡管理方式啟動的名稱為networktest的容器。
需要注意的是,這里介紹的三種網絡bridge、host和none都是在非集群環境下Docker提供的默認網絡,而在Docker Swarm集群環境下,除了這三種默認網絡外,Docker還提供了docker_gwbridge和ingress兩種默認網絡。
小提示:
在上一章中已經啟動了多個容器,并且都是默認使用bridge網絡進行管理的。為了不對本章節相關講解和測試造成干擾,建議先將前面章節創建的容器全部移除。
雖然Docker提供的默認網絡的使用比較簡單,但是為了保證各容器中應用的安全性,在實際開發中更推薦使用自定義的網絡進行容器管理。
在Docker中,可以自定義bridge網絡、overlay網絡,也可以創建network plugin(網絡插件)或者遠程網絡以實現容器網絡的完全定制和控制。接下來將分別針對這幾種自定義網絡進行講解。
為了保證容器的安全性,我們可以使用基于bridge的驅動創建新的bridge網絡,這種基于bridge驅動的自定義網絡可以較好的實現容器隔離。
? 需要說明的是,這種用戶自定義的基于bridge驅動的網絡對于單主機的小型網絡環境管理是一個不錯的選擇,但是對于大型的網絡環境管理(如集群)就需要考慮使用自定義overlay集群網絡。
? 在Docker Swarm集群環境下可以創建基于overlay驅動的自定義網絡。為了保證安全性,Swarm集群使自定義的overlay網絡只適用于需要服務的群集中的節點,而不會對外部其他服務或者Docker主機開放。
? 如果前面幾種自定義網絡都無法滿足需求時,就可以使用Docker提供的插件來自定義網絡驅動插件。自定義網絡插件會在Docker進程所在主機上作為另一個運行的進程。
自定義網絡驅動插件與其他插件遵循相同的限制和安裝規則,所有插件都使用Docker提供的插件API,并且有一個包含安裝、啟動、停止和激活的生命周期。由于自定義網絡插件使用較少,所以讀者只需了解即可。
上一節已經對Docker中幾種常用的自定義網絡進行了簡單介紹,本小節將針對非集群環境下基于bridge驅動的自定義網絡進行詳細講解。
? 在Docker主機上可以使用docker network create指令來創建網絡,具體操作指令如下。
$ docker network create --driver bridge isolated_nw
? 執行上述指令可以創建一個基于bridge驅動的名稱為isolated_nw的網絡。其中–driver(可簡寫為-d)用于指定網絡驅動類型,isolated_nw就是新創建的網絡名稱。需要說明的是,–driver bridge可以省略,省略時Docker會默認使用基于bridge驅動來創建新的網絡。
? 創建完網絡后,可以使用docker network ls指令查看創建的網絡是否成功,效果如圖1所示。
從圖1可以看出,新創建的isolated_nw網絡已經在列表中展示出來,這說明新的bridge網絡創建成功。
除docker network ls指令外,還可以使用docker network inspect指令查看新建網絡的詳細信息。
自定義網絡創建成功后,就可以使用該網絡啟動一個容器,具體操作指令如下。
$ docker run --network=isolated_nw -itd --name=nwtest busybox
執行上述指令后,會創建一個名為nwtest的容器,指令中的–network參數指定了該容器的網絡連接為自定義的isolated_nw。
通過docker inspect nwtest指令可以查看啟動后的容器詳情,來核查其網絡管理方式,效果如圖2所示。
從圖2可以看出,名為nwtest的容器使用的就是自定義的isolated_nw網絡進行容器網絡管理的。
名為nwtest的容器使用的只有自定義的isolated_nw一種網絡管理方式,我們還可以繼續為該容器添加其他網絡管理方式,具體操作指令如下。
$ docker network connect bridge nwtest
執行上述指令后,會為容器nwtest另添加一種默認的bridge網絡管理方式。再次使用docker inspect nwtest指令查看該容器網絡詳情,效果如圖3所示。
從圖3可以看出,執行完為容器添加網絡管理的指令后,容器nwtest就擁有了兩種網絡管理方式,分別為默認的bridge網絡和自定義的isolated_nw網絡。
? 容器既可以連接網絡,也可以斷開網絡。這里以斷開nwtest容器的自定義網絡isolated_nw為例進行演示,斷開網絡連接的指令如下。
$ docker network disconnect isolated_nw nwtest
? 斷開網絡連接的指令與連接網絡的指令類似,在使用時也需要指定網絡名稱和容器名稱。
小提示:
一個容器可以有一到多個網絡連接,當使用斷開網絡連接的指令將一個容器內的所有的網絡連接方式全部斷開后,雖然容器還在運行,但是容器內部的應用將無法被外界訪問。
? 當不再需要某個網絡時,可以將該網絡移除,但在移除網絡之前,一定要先將所有與該網絡連接的容器斷開。移除自定義網絡的指令如下。
$ docker network rm isolated_nw
? 執行上述指令后,就可以移除名稱為isolated_nw的自定義網絡。當網絡移除成功后,會返回網絡名稱。為了驗證網絡是否移除成功,可以使用docker network ls指令列舉所有網絡進一步確認。
總結
以上是生活随笔為你收集整理的Docker默认网络管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Registry本地私有仓
- 下一篇: 情人节特效.羞答答的玫瑰静悄悄的开效果.