Docker | Docker技術基礎梳理(五) - Docker網絡管理

Docker | Docker技術基礎梳理(五) - Docker網絡管理

爲何須要容器的網絡管理?

容器的網絡默認與宿主機、與其餘容器相互隔離,且容器中能夠運行一些網絡應用,好比nginx、web應用、數據庫等,若是須要讓外部也能夠訪問這些容器中運行的網絡應用,那麼就須要配置網絡來實現。nginx

一樣的,不一樣需求下,容器與宿主機的通訊有不一樣的業務狀態這時候就須要容器網絡管理以達成管理不一樣業務下相關的網絡配置。web

Docker中的網絡驅動模式有那些?

bridge network(網橋)模式:默認的網絡模式,相似虛擬機的nat模式docker

host network(主機)模式:容器與宿主機之間的網絡無隔離,即容器直接使用宿主機網絡數據庫

none network模式:容器禁用全部網絡網絡

overlay network(覆蓋)模式:利用vxlan實現的bridge模式負載均衡

macvlan network模式:容器具有MAC地址,使其在外部看來是一臺真實的網絡設備ide

Docker網絡管理命令淺析

查看網絡(docker network ls)

命令格式: docker network ls [參數]性能

經常使用參數:計算機網絡

-q 只顯示網絡對象的ID

注意: docker安裝以後,會自動建立bridge、host、none三種網絡驅動。3d

建立網絡(docker network create)

命令格式:docker network create [參數] 網絡

經常使用參數:

-d 指定網絡的驅動,不指定默認爲bridge
-- subnet 指定子網網段(192.168.0.0/16)
-- ip-range 指定容器的IP範圍
-- gateway 子網的網關

注意:

  • 建立網絡部分參數,涉及到網絡工程師相關的知識,這裏不作詳細介紹有須要能夠參考「計算機網絡」這本書,內有詳解。

  • host、none模式的網絡只能存在一個,再次建立會報錯。

  • overlay網絡建立依賴於docker swarm(集羣負載均衡)服務

網絡刪除(docker network rm)

刪除一個或多個網絡

命令格式:docker network rm 網絡[網絡..]

查看網絡詳細信息(docker network inspect)

命令格式:

docker network inspect [參數] 網絡

docker inspect [參數] 網絡

經常使用參數:

-f 根據format輸出結果

Docker | Docker技術基礎梳理(五) - Docker網絡管理

使用網絡(docker run)

命令格式:docker run/create --network 網絡

注意:默認狀況下,docker建立或啓動容器時,會默認使用名爲bridge的網絡

網絡鏈接與斷開(docker network connect /disconnect)

命令格式:

docker network connect/disconnect [參數] 網絡 容器

經常使用參數:

-f 強制斷開鏈接

Docker網絡模式簡介

bridge網絡模式

  1. bridge網絡模式的特色:
  • 宿主機上須要單獨的bridge網卡,如默認docker默認建立的docker0。

  • 容器之間、容器與主機之間的網絡通訊,是藉助爲每個容器生成的一對veth pair虛擬網絡設備對,進行通訊的。一個在容器上,另外一個在宿主機上。(這是網橋)

  • 每建立一個基於bridge網絡的容器,都會自動在宿主機上建立一個veth 虛擬網絡設備。
  • 外部沒法直接訪問容器。須要創建端口映射才能訪問。(能夠理解爲網卡)

  • 容器藉由veth虛擬設備經過如docker0這種bridge網絡設備進行通訊。

  • 每一容器具備單獨的IP

  • bridge網絡模式下宿主機與容器服務使用的端口能夠重複

Docker | Docker技術基礎梳理(五) - Docker網絡管理

bridge原理示意圖

2 . bridge網絡模式下的端口映射
根據上面關於bridge的特色咱們能夠知道訪問bridge網絡模式的設備,須要端口映射。

端口映射的命令格式:docker run/create -P/-p

命令參數:

-P 將容器內部全部暴露端口進行隨機映射
-p 手動指定端口映射 (-p [宿主機IP] : [宿主機端口] : 容器端口)

關於-p參數的舉例:

-p ::80 將容器的80端口隨機映射到宿主機的隨機IP上
-p :8000:6379 將容器的6379端口映射到宿主機的任意IP的8000端口上

host網絡模式

host網絡模式的特色:

  • 容器徹底共享宿主機的網絡,網絡沒有隔離。宿主機的網絡就是容器的網絡。

  • 容器、主機上的應用所使用的端口不能重複。

  • 外部能夠直接訪問容器,不須要端口映射

  • 容器IP就是宿主機的IP

Docker | Docker技術基礎梳理(五) - Docker網絡管理

host網絡模式示意圖

除了普通的host網絡模式外,一樣還有特殊版本的host網絡模式(container網絡模式)。

container網絡模式的特色:

其實就是容器共享其餘容器的網絡,至關於該容器,在網絡層面上,將其餘容器做爲「主機」。它們之間的網絡沒有隔離。

Docker | Docker技術基礎梳理(五) - Docker網絡管理
container網絡模式

container網絡模式的使用:

docker run/create --network container:容器
none、overlay與macvlan網絡模式

none網絡模式的特色:

  • 容器上沒有網絡,也無需任何網絡設備

  • 若是須要使用網絡,須要用戶自行安裝與配置

overlay網絡模式的特色:

  • overlay網絡模式實現方案有不少種,在Docker自身集成了一種,基於VXLAN隧道技術實現

  • overlay網絡主要用於實現跨主機容器之間的通訊

macvlan網絡模式的特色:

  • macvlan的主要特色就是通訊直接基於mac地址進行轉發

  • 在macvlan中宿主機擔任的角色是一臺二層交換機,docker會維護一張mac地址表,當宿主機收到數據包時,直接根據mac地址找到對應的容器

  • 而在容器內部互相通訊的時候,容器直接使用IP互通,因此每一個容器對於外面的網絡都是一臺真實的網絡設備

總結

此次文章主要複習了docker的網絡管理的內容,其中host,bridge,container是主要的複習內容,且在三種網絡模式中建議優先選用host網絡模式,其使用性能最優。

相關文章
相關標籤/搜索