overlay模型
Docker 提供了 overlay driver,使使用者可以建立基於 VxLAN 的 overlay 網路.VxLAN 可將二層資料封裝到 UDP 進行傳輸,VxLAN 提供與 VLAN 相同的乙太網二層服務,但是擁有更強的擴充套件性和靈活性.
Docerk overlay 網路需要一個 key-value 資料庫用於儲存網路狀態資訊 包括 Network、Endpoint、IP 等.Consul、Etcd 和 ZooKeeper 都是 Docker 支援的 key-vlaue 軟體
docker network inspect 中的 "IPAM" 是指 IP Address Managemen
docker 會建立一個 bridge 網路 “docker_gwbridge”,為所有連線到 overlay 網路的容器提供訪問網路的能力
overlay 網路的具體實現:
1.docker 會為每個 overlay 網路建立一個獨立的 network namespace,其中會有一個 linux bridge br0,endpoint 還是由 veth pair 實現,一端連線到容器中(即 eth0),另一端連線到 namespace 的 br0 上
2.br0 除了連線所有的 endpoint,還會連線一個 vxlan 裝置,用於與其他 host 建立 vxlan tunnel。容器之間的資料就是透過這個 tunnel 通訊的
不同 overlay 網路之間是隔離的 即便是透過 docker_gwbridge 也不能通訊
如果需要通訊 需要把其它overlay網路的容器新增一個網絡卡連線到overlay網路中 docker network connect overlay1 容器2 表示給容器2新增一個到overlay1的連線
overlay IPAM docker 預設為 overlay 網路分配 24 位掩碼的子網(10.0.X.0/24)所有主機共享這個 subnet,容器啟動時會順序從此空間分配 IP
MACVLAN網路模型
macvlan 本身是 linxu kernel 模組,其功能是允許在同一個物理網絡卡上配置多個 MAC 地址,即多個 interface,每個 interface 可以配置自己的 IP。macvlan 本質上是一種網絡卡虛擬化技術.
macvlan 的最大優點是效能極好,相比其他實現.macvlan 不需要建立 Linux bridge,而是直接透過以太 interface 連線到物理網路
容器的 eth0 就是 enp0s9 透過 macvlan 虛擬出來的 interface.容器的 interface 直接與主機的網絡卡連線,這種方案使得容器無需透過 NAT 和埠對映就能與網路直接通訊(只要有閘道器),在網路上與其他獨立主機沒有區別
用 sub-interface 實現多 macvlan 網路
macvlan 會獨佔主機的網絡卡,也就是說一個網絡卡只能建立一個 macvlan 網路.但主機的網絡卡數量是有限的,如何支援更多的 macvlan 網路
macvlan 不僅可以連線到 interface(如 enp0s9) 也可以連線到 sub-interface(如 enp0s9.xxx)
VLAN 是現代網路常用的網路虛擬化技術,它可以將物理的二層網路劃分成多達 4094 個邏輯網路,這些邏輯網路在二層上是隔離的,每個邏輯網路(即 VLAN)由 VLAN ID 區分,VLAN ID 的取值為 1-4094
Linux 的網絡卡也能支援 VLAN,同一個 interface 可以收發多個 VLAN 的資料包,不過前提是要建立 VLAN 的 sub-interface
如希望 enp0s9 同時支援 VLAN10 和 VLAN20,則需建立 sub-interface enp0s9.10 和 enp0s9.20
在交換機上,如果某個 port 只能收發單個 VLAN 的資料,該 port 為 Access 模式. 如果支援多 VLAN,則為 Trunk 模式.enp0s9 要接在交換機的 trunk 口上
不同 macvlan 網路不能在二層上通訊 在三層上可以透過閘道器將 macvlan 連通
設定三層閘道器連通方式:
1.將 一臺Host 配置成一個虛擬路由器並且設定閘道器IP
1.因為 bbox1 與 bbox4 在不同的 IP 網段,跟據 bbox1 的路由表 資料包將傳送到閘道器 172.16.10.1 eth2.10
3.透過 ARP 記錄的資訊,路由器能夠得知 172.16.20.11 在 host2 上,於是將資料包傳送給 host2
4.host2 根據目的地址和 VLAN 資訊將資料包傳送給 bbox4
macvlan 網路的連通和隔離完全依賴 VLAN、IP subnet 和路由,docker 本身不做任何限制,使用者可以像管理傳統 VLAN 網路那樣管理 macvlan
overlay模型
Docker 提供了 overlay driver,使使用者可以建立基於 VxLAN 的 overlay 網路.VxLAN 可將二層資料封裝到 UDP 進行傳輸,VxLAN 提供與 VLAN 相同的乙太網二層服務,但是擁有更強的擴充套件性和靈活性.
Docerk overlay 網路需要一個 key-value 資料庫用於儲存網路狀態資訊 包括 Network、Endpoint、IP 等.Consul、Etcd 和 ZooKeeper 都是 Docker 支援的 key-vlaue 軟體
docker network inspect 中的 "IPAM" 是指 IP Address Managemen
docker 會建立一個 bridge 網路 “docker_gwbridge”,為所有連線到 overlay 網路的容器提供訪問網路的能力
overlay 網路的具體實現:
1.docker 會為每個 overlay 網路建立一個獨立的 network namespace,其中會有一個 linux bridge br0,endpoint 還是由 veth pair 實現,一端連線到容器中(即 eth0),另一端連線到 namespace 的 br0 上
2.br0 除了連線所有的 endpoint,還會連線一個 vxlan 裝置,用於與其他 host 建立 vxlan tunnel。容器之間的資料就是透過這個 tunnel 通訊的
不同 overlay 網路之間是隔離的 即便是透過 docker_gwbridge 也不能通訊
如果需要通訊 需要把其它overlay網路的容器新增一個網絡卡連線到overlay網路中 docker network connect overlay1 容器2 表示給容器2新增一個到overlay1的連線
overlay IPAM docker 預設為 overlay 網路分配 24 位掩碼的子網(10.0.X.0/24)所有主機共享這個 subnet,容器啟動時會順序從此空間分配 IP
MACVLAN網路模型
macvlan 本身是 linxu kernel 模組,其功能是允許在同一個物理網絡卡上配置多個 MAC 地址,即多個 interface,每個 interface 可以配置自己的 IP。macvlan 本質上是一種網絡卡虛擬化技術.
macvlan 的最大優點是效能極好,相比其他實現.macvlan 不需要建立 Linux bridge,而是直接透過以太 interface 連線到物理網路
容器的 eth0 就是 enp0s9 透過 macvlan 虛擬出來的 interface.容器的 interface 直接與主機的網絡卡連線,這種方案使得容器無需透過 NAT 和埠對映就能與網路直接通訊(只要有閘道器),在網路上與其他獨立主機沒有區別
用 sub-interface 實現多 macvlan 網路
macvlan 會獨佔主機的網絡卡,也就是說一個網絡卡只能建立一個 macvlan 網路.但主機的網絡卡數量是有限的,如何支援更多的 macvlan 網路
macvlan 不僅可以連線到 interface(如 enp0s9) 也可以連線到 sub-interface(如 enp0s9.xxx)
VLAN 是現代網路常用的網路虛擬化技術,它可以將物理的二層網路劃分成多達 4094 個邏輯網路,這些邏輯網路在二層上是隔離的,每個邏輯網路(即 VLAN)由 VLAN ID 區分,VLAN ID 的取值為 1-4094
Linux 的網絡卡也能支援 VLAN,同一個 interface 可以收發多個 VLAN 的資料包,不過前提是要建立 VLAN 的 sub-interface
如希望 enp0s9 同時支援 VLAN10 和 VLAN20,則需建立 sub-interface enp0s9.10 和 enp0s9.20
在交換機上,如果某個 port 只能收發單個 VLAN 的資料,該 port 為 Access 模式. 如果支援多 VLAN,則為 Trunk 模式.enp0s9 要接在交換機的 trunk 口上
不同 macvlan 網路不能在二層上通訊 在三層上可以透過閘道器將 macvlan 連通
設定三層閘道器連通方式:
1.將 一臺Host 配置成一個虛擬路由器並且設定閘道器IP
1.因為 bbox1 與 bbox4 在不同的 IP 網段,跟據 bbox1 的路由表 資料包將傳送到閘道器 172.16.10.1 eth2.10
3.透過 ARP 記錄的資訊,路由器能夠得知 172.16.20.11 在 host2 上,於是將資料包傳送給 host2
4.host2 根據目的地址和 VLAN 資訊將資料包傳送給 bbox4
macvlan 網路的連通和隔離完全依賴 VLAN、IP subnet 和路由,docker 本身不做任何限制,使用者可以像管理傳統 VLAN 網路那樣管理 macvlan