1. 程式人生 > >Docker系列(六):Docker網路機制(下)

Docker系列(六):Docker網路機制(下)

Linux Namespace詳解

在這裡插入圖片描述
namespace:是一個空間,空間裡可以放程序,檔案系統,賬號,網路等,某個資源被放到namespace之後
別人就看不到他了。
可以看到有兩個namespace下兩個相同名字的程序0,並不衝突,每個namespace是獨立的隔離的,相當於一個linux系統
容器就相當於一個namespace,整合網路,檔案等資源。
在這裡插入圖片描述
在這裡插入圖片描述

點對點模式

在這裡插入圖片描述
veth pair是用於不同network namespace間 進行通訊的方式,veth pair將一個network namespace資料發往另一個network namespace的veth。

交換機模式

在這裡插入圖片描述
Linux Bridge可以實現類似交換機的工作模式, 將多個不同Namespace上的網絡卡連通
linuxbrige只是mac地址交換,linux Brige有ip地址,所以可以做路由轉發。

舉例

在這裡插入圖片描述
預設情況下,建立一個docker容器,會自動建立一個docker0的網橋,可以看到interface 是沒有的,說明bridge是空的沒有掛載埠,當你啟動一個容器後,bridge就會出現一個埠。
每建立一個容器就會出現一個veth pair對,veth pair一端掛載在docker0上,一端掛載在容器的網絡卡上
docker中的namespace和pid是一樣的,程序的編號就是namespace名稱,這裡的程序指的是containner本身的pid,不是containert裡面應用的pid。


在這裡插入圖片描述
在這裡插入圖片描述

OVS+Docker

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
上圖是不容網段的,相同網段的可以通過二層,不同網段的必須通過交換機,

安裝ovs

vi /etc/selinux/config SELINUX=disabled
重啟
yum install openvswitch-2.4.0-1.x86_64.rpm
[[email protected] ~]# service openvswitch restart Restarting openvswitch (via systemctl):[ OK ]
[[email protected] ~]# service openvswitch status
ovsdb-server is running with pid 2429
ovs-vswitchd is running with pid 2439
在這裡插入圖片描述


在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
說明了,gre是在物理網路上進行傳播的,並不是在brg裡面,只是在物理網路裡面進行了二次封裝,所以走的還是eth0.