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 run)
命令格式:docker run/create --network 網路
注意:預設情況下,docker建立或啟動容器時,會預設使用名為bridge的網路
網路連線與斷開(docker network connect /disconnect)
命令格式:
docker network connect/disconnect [引數] 網路 容器
常用引數:
-f 強制斷開連線
Docker網路模式簡介
bridge網路模式
bridge網路模式的特點:
宿主機上需要單獨的bridge網路卡,如預設docker預設建立的docker0。
容器之間、容器與主機之間的網路通訊,是藉助為每一個容器生成的一對veth pair虛擬網路裝置對,進行通訊的。一個在容器上,另一個在宿主機上。(這是網橋)
每建立一個基於bridge網路的容器,都會自動在宿主機上建立一個veth**虛擬網路裝置。
外部無法直接訪問容器。需要建立埠對映才能訪問。(可以理解為網路卡)容器藉由veth虛擬裝置透過如docker0這種bridge網路裝置進行通訊。
每一容器具有單獨的IP
bridge網路模式下宿主機與容器服務使用的埠可以重複
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
除了普通的host網路模式外,同樣還有特殊版本的host網路模式(container網路模式)。
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網路模式,其使用效能最優。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556785/viewspace-2565390/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker | Docker技術基礎梳理(一)Docker
- Docker | Docker技術基礎梳理(二) - 映象管理Docker
- Docker | Docker技術基礎梳理(三) - 容器生命週期管理Docker
- Docker | Docker技術基礎梳理(四) - 深入理解映象與容器Docker
- Docker 基礎 : 網路配置Docker
- 容器技術之Docker網路Docker
- Docker 技術基礎之 CGroupsDocker
- Docker 網路管理Docker
- Docker網路管理Docker
- 【Docker】Docker基礎操作Docker
- Docker網路配置基礎知識Docker
- 容器技術之Docker基礎入門Docker
- Docker的網路管理Docker
- Docker 基礎 : 資料管理Docker
- Docker 基礎-映象&容器&網路&儲存Docker
- docker學習第八天 docker 基礎之網路配置Docker
- Docker 基礎知識 - Docker 概述Docker
- docker基礎Docker
- Docker:基礎Docker
- Docker 基礎Docker
- [Docker 系列]docker 學習八,Docker 網路Docker
- docker系列(五):網路通訊Docker
- 【Docker】第五篇 Docker 資料管理Docker
- Docker容器學習梳理 - 基礎知識(2)Docker
- Docker容器學習梳理–基礎知識(2)Docker
- Docker容器學習梳理 - 基礎知識(1)Docker
- docker容器技術基礎之linux cgroup、namespaceDockerLinuxnamespace
- Docker容器技術與Docker介紹Docker
- 【Docker】(11)---Docker的網路概念Docker
- Docker容器學習梳理 - 基礎環境安裝Docker
- Docker進階與實踐之五:Docker網路LibnetworkDocker
- Docker|基礎篇Docker
- Docker--基礎Docker
- Docker 基礎 - 1Docker
- Docker 基礎 - 2Docker
- Docker 基礎 - 3Docker
- Docker 基礎命令Docker
- Docker基礎原理Docker