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

鹹魚普拉思發表於2019-02-01

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

為什麼需要容器的網路管理?

容器的網路預設與宿主機、與其他容器相互隔離,且容器中可以執行一些網路應用,比如nginx、web應用、資料庫等,如果需要讓外部也可以訪問這些容器中執行的網路應用,那麼就需要配置網路來實現。

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

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

bridge network(網橋)模式:預設的網路模式,類似虛擬機器的nat模式

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

none network模式:容器禁用所有網路

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

macvlan network模式:容器具備MAC地址,使其在外部看來是一臺真實的網路裝置

Docker網路管理命令淺析

檢視網路(docker network ls)

命令格式: docker network ls [引數]

常用引數:

-q 只顯示網路物件的ID

注意: docker安裝之後,會自動建立bridge、host、none三種網路驅動。

建立網路(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網路管理
  1. 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網路模式(container網路模式)。

container網路模式的特點:

其實就是容器共享其他容器的網路,相當於該容器,在網路層面上,將其他容器作為“主機”。它們之間的網路沒有隔離。

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

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網路模式,其使用效能最優。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556785/viewspace-2565390/,如需轉載,請註明出處,否則將追究法律責任。

相關文章