- Docker有五種網路驅動模式:
- bridge network 模式(網橋):默認的網路模式,類似虛擬機的nat模式
- host network 模式(主機):容器與宿主機之間的網路無隔離,即容器直接使用宿主機網路
- None network 模式:容器禁用所有網路,
- Overlay network 模式(覆寫網路): 利用VXLAN實作的bridge模式
- Macvlan network 模式:容器具備Mac地址,使其顯示為網路上的物理設備
查看網路 ls
- 作用:
- 查看已經建立的網路物件
- 命令格式:
- docker network COMMAND
- 命令引數:
- -f, --filter filter 過濾條件(如 'driver=bridge')
- --format string 格式化列印結果
- --no-trunc 不縮略顯示
- -q, --quiet 只顯示網路物件的ID
- 默認情況下,docker安裝完成后,會自動創建bridge、host、none三種網路驅動
創建網路 create
- 作用:
- 創建新的網路
- 命令格式:
- docker network create [OPTIONS] NETWORK
- 命令引數:
- -d 指定網路的驅動(默認bridge)
- --subnet strings 指定子網網段(如192.168.0.0/16,172.88.0.0/24)
- --ip-range strings 指容器的IP范圍
- --gateway strings 子網IP的網關 如192.168.0.1
- 注意:
- Host和none網路只能存在一個
- Docker自帶的overlay網路創建依賴于docker swarm服務
- 192.168.0.0/16 等于192.168.0.0 ~ 192.168.255.255
- 192.168.0.0/24 等于192.168.0.0 ~ 192.168.0.255
- --ip-range 是—subnet 一個子集,他的范圍只能在他之間,
- 如果ip-range 沒設定就等同于—subnet 范圍
- 注意:
- 這里的IP段和網關不要設定成宿主機一樣的,不然進去不去,
docker network create --subnet 172.89.0.0/16 --ip-range 172.89.8.0/24 --gateway 172.89.8.1 my-test1
洗掉網路/查看詳情
- 作用:
- 洗掉一個或多個網路
- 命令格式:
- docker network rm NETWORK [NETWORK...]
- 命令引數(OPTIONS):
- 無
- 作用:
- 查看一個或多個網路的詳細資訊
- 命令格式:
- docker network inspect [OPTIONS] NETWORK [NETWORK...]
- 或者 docker inspect [OPTIONS] NETWORK [NETWORK...]
- 命令引數(OPTIONS): -f, --format string 根據format輸出結果

使用網路
- 作用:
- 為啟動容器指定網路模式
- 命令格式:
- docker run/create --network NETWORK
- 命令引數(OPTIONS):
- 無
- 注意:
- 默認情況下,docker創建或者啟動容器時,默認使用網路名為bridge的網路


網路連接和斷開
- 作用: 將指定的容器與指定的網路連接或者斷開
- 命令格式:
- docker network connect [OPTIONS] NETWORK CONTAINER
- docker network disconnect [OPTIONS] NETWORK CONTAINER




Docker網路模式介紹
Bridge
- 特點:
- 宿主機上需要單獨的bridge網卡,如默認docker默認創建的docker0,
- 容器之間、容器與主機之間的網路通信,是借助為每一個容器生成的一對veth pair虛擬網路設備對,進行通信的,一個在容器上,另一個在宿主機上,
- 每創建一個基于bridge網路的容器,都會自動在宿主機上創建一個veth**虛擬網路設備,
- 外部無法直接訪問容器,需要建立埠映射才能訪問, 容器借由veth虛擬設備通過如docker0這種bridge網路設備進行通信,
- 每一容器具有單獨的IP

Bridge 埠映射
- 作用:
- 啟動容器時,為容器進行埠映射
- 命令格式:
- docker run/create -P …
- 或者 docker run/create –p …
- 命令引數(OPTIONS):
- -P 將容器內所有暴露的埠進行隨機映射
- -p 手動指定埠映射
- 注意:
- -p [HOST_IP]:[HOST_PORT]:CONTAINER_PORT
- 如:
- -p ::80 將容器的80埠隨機(埠)映射到宿主機任意IP
- -p :8000:6379 將容器的6379埠映射到宿主機任意IP的8000埠
- -p 192.168.5.1::3306 將容器的3306埠隨機(埠)映射到宿主機的192.168.5.1IP上

Host
- 特點:
- 容器完全共享宿主機的網路,網路沒有隔離,宿主機的網路就是容器的網路,
- 容器、主機上的應用所使用的埠不能重復,
- 例如:如果宿主機已經占用了8090埠,那么任何一個host模式的容器都不可以使用8090埠了;
- 反之同理, 外部可以直接訪問容器,不需要埠映射, 容器的IP就是宿主機的IP

特殊host 網路模式(Container網路模式)
- Container網路模式,其實就是容器共享其他容器的網路,
- 相當于該容器,,在網路層面上,將其他容器作為"主機",它們之間的網路沒有隔離, 這些容器之間的特性同host模式
- 用法:
- docker run --rm -dit --network container:my-test --name my-test2 centos:7.2.1511
None網路
- 特點:
- 容器上沒有網路,也無任何網路設備,
- 如果需要使用網路,需要用戶自行安裝與配置,
- 應用場景
- 該模式適合需要高度定制網路的用戶使用,
overlay 網路
- Overlay 網路,也稱為覆寫網路,
- Overlay 網路的實作方式和方案有多種,Docker自身集成了一種,基于VXLAN隧道技術實作,
- Overlay 網路主要用于實作跨主機容器之間的通信,
- 應用場景:需要管理成百上千個跨主機的容器集群的網路時,
macvlan 網路模式
- macvlan網路模式,最主要的特征就是他們的通信會直接基于mac地址進行轉發,
- 這時宿主機其實充當一個二層交換機,Docker會維護著一個MAC地址表,當宿主機網路收到一個資料包后,直接根據mac地址找到對應的容器,再把資料交給對應的容器,
- 容器之間可以直接通過IP互通,通過宿主機上內建的虛擬網路設備(創建macvlan網路時自動創建),但與主機無法直接利用IP互通,
- 應用場景:
- 由于每個外來的資料包的目的mac地址就是容器的mac地址,這時每個容器對于外面網路來說就相當于一個真實的物理網路設備,因此當需要讓容器來的網路看起來是一個真實的物理機時,使用macvlan模式

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/106012.html
標籤:其他
下一篇:一文解讀DDD (轉)
