為什么需要容器的網絡管理?
容器的網絡默認與宿主機、與其他容器相互隔離,且容器中可以運行一些網絡應用,比如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參數的舉例:
80?將容器的
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網絡模式,其使用性能最優。


咸魚普拉思
一只咸魚在編程路上的摸爬滾打,記錄摸索中的點點滴滴。