容器的網絡默認與宿主機、與其餘容器相互隔離,且容器中能夠運行一些網絡應用,好比nginx、web應用、數據庫等,若是須要讓外部也能夠訪問這些容器中運行的網絡應用,那麼就須要配置網絡來實現。nginx
一樣的,不一樣需求下,容器與宿主機的通訊有不一樣的業務狀態這時候就須要容器網絡管理以達成管理不一樣業務下相關的網絡配置。web
bridge network(網橋)模式:默認的網絡模式,相似虛擬機的nat模式docker
host network(主機)模式:容器與宿主機之間的網絡無隔離,即容器直接使用宿主機網絡數據庫
none network模式:容器禁用全部網絡網絡
overlay network(覆蓋)模式:利用vxlan實現的bridge模式負載均衡
macvlan network模式:容器具有MAC地址,使其在外部看來是一臺真實的網絡設備ide
命令格式: docker network ls [參數]性能
經常使用參數:計算機網絡
-q 只顯示網絡對象的ID
注意: docker安裝以後,會自動建立bridge、host、none三種網絡驅動。3d
命令格式:docker network create [參數] 網絡
經常使用參數:
-d 指定網絡的驅動,不指定默認爲bridge -- subnet 指定子網網段(192.168.0.0/16) -- ip-range 指定容器的IP範圍 -- gateway 子網的網關
注意:
建立網絡部分參數,涉及到網絡工程師相關的知識,這裏不作詳細介紹有須要能夠參考「計算機網絡」這本書,內有詳解。
host、none模式的網絡只能存在一個,再次建立會報錯。
刪除一個或多個網絡
命令格式:docker network rm 網絡[網絡..]
命令格式:
docker network inspect [參數] 網絡
docker inspect [參數] 網絡
經常使用參數:
-f 根據format輸出結果
命令格式:docker run/create --network 網絡
注意:默認狀況下,docker建立或啓動容器時,會默認使用名爲bridge的網絡
命令格式:
docker network connect/disconnect [參數] 網絡 容器
經常使用參數:
-f 強制斷開鏈接
bridge網絡模式
宿主機上須要單獨的bridge網卡,如默認docker默認建立的docker0。
容器之間、容器與主機之間的網絡通訊,是藉助爲每個容器生成的一對veth pair虛擬網絡設備對,進行通訊的。一個在容器上,另外一個在宿主機上。(這是網橋)
外部沒法直接訪問容器。須要創建端口映射才能訪問。(能夠理解爲網卡)
容器藉由veth虛擬設備經過如docker0這種bridge網絡設備進行通訊。
每一容器具備單獨的IP
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網絡模式的特色:
容器徹底共享宿主機的網絡,網絡沒有隔離。宿主機的網絡就是容器的網絡。
容器、主機上的應用所使用的端口不能重複。
外部能夠直接訪問容器,不須要端口映射
host網絡模式示意圖
除了普通的host網絡模式外,一樣還有特殊版本的host網絡模式(container網絡模式)。
container網絡模式的特色:
其實就是容器共享其餘容器的網絡,至關於該容器,在網絡層面上,將其餘容器做爲「主機」。它們之間的網絡沒有隔離。
container網絡模式
container網絡模式的使用:
docker run/create --network container:容器
none、overlay與macvlan網絡模式
none網絡模式的特色:
容器上沒有網絡,也無需任何網絡設備
overlay網絡模式的特色:
overlay網絡模式實現方案有不少種,在Docker自身集成了一種,基於VXLAN隧道技術實現
macvlan網絡模式的特色:
macvlan的主要特色就是通訊直接基於mac地址進行轉發
在macvlan中宿主機擔任的角色是一臺二層交換機,docker會維護一張mac地址表,當宿主機收到數據包時,直接根據mac地址找到對應的容器
此次文章主要複習了docker的網絡管理的內容,其中host,bridge,container是主要的複習內容,且在三種網絡模式中建議優先選用host網絡模式,其使用性能最優。