Docker Linux VLAN 虛擬化 VPN LXD SDN

Docker容器進階管理 設置系統資源及互連VPN

2015-08-03
之前介紹過Docker透過Linux Namespace方式銜接實體網路取得外部對應IP位址的方式,也談到同一主機內透過預設的docker0主系統橋接介面可以進行互連,接著進行網路設定。本文將接力介紹Docker容器的進階管理技巧,包括不同主機之間Docker容器隔離獨立網路互連,以及如何限制Docker容器使用資源。
當然,這些指令也都要在兩個主機上分別執行設定。可以使用「ip netns list」指令查詢到系統內已經有「debian71」這個網路命名空間存在,如圖5所示。


▲圖5 列出網路命名空間。

建立網路命名空間後,接著使用以下的指令在兩台主機中建立點對點(Peer)相通的虛擬網路介面(veth),並將其連結到容器中:


其中,vethh0及vethc0分別為在主機(Host)與容器(Container)中使用的設備名稱,以結尾字串h0及c0區分一個在主機,另一個在容器。這些名稱都可以自行命名,只要好識別即可。最後的「netns debian71」,則是將vethc0這個用在容器中設備名稱指定到容器空間名稱debian71內。

設定完成之後,可以使用「ip netns exec debian71 ip link show」指令檢視容器內網路的設定,如圖6所示。


▲圖6 使用「ip netns exec」指令檢視容器中網路的設定。

可以看到剛指定進來的vethc0,在主機中也可以看到給主機使用的設備vethh0。接著,使用底下指令將主機的vethh0設備啟動,並且加入至先前設定的橋接設備vbr0中:


最後,再使用底下指令設定容器中vethc0設備的網路IP位址,並啟動vethc0設備:


其中192.168.56.21/24是設定給容器的IP位址及網路遮罩,兩個不同的容器要設定到同一個vlan中互通,當然要設定不同的IP位址。另一個容器IP位址設定為192.168.56.22,網路遮罩當然一樣是24。

至此,兩個主機上的容器應該可以互通。可以使用「docker exec -t -i debian71 /bin/bash」指令進入容器,並執行相關指令測試網路是否相通,如圖7所示。


▲圖7 進入容器檢視網路設定,使用ping指令測試網路是否互通。

可以看到這裡進入的是IP位址設定為192.168.56.21的容器,用ping測試到192.168.56.22是互通的。後續如果有同主機或其他主機的容器要加入這個vlan id為100的192.168.56.0的獨立網路時,只要依照類似步驟加入即可。而若要創造出另一個獨立網路時,只要另外再建置另一個vlan id的介面以及相對應的橋接設備即可。

另外,如果要解出前面的相關設定,只要執行下列指令即可:


首先第一個指令是將vethh0由橋接設備vbr0中移除,之後第二個指令是刪除vethh0這個veth設備,在刪除vethh0設備的同時,其對應的vethc0設備也會一起被刪除。

接著,將enp0s3.100這個vlan設備由橋接設備vbr0內移除,然後刪除enp0s3.100的vlan設備,最後則刪除vbr0橋接設備。

這裡保留「ip link delete dev vethh0 type veth」指令不執行,也就是保留容器與主機的網路銜接介面vethh0,只將vethh0移出橋接設備vbr0,以留待後面Open vSwitch使用。

安裝Open vSwitch

除了透過Linux本身的vlan來建立不同主機容器可互連的獨立區域網路外,也可以使用另一個常用的軟體定義網路(SDN)系統軟體Open vSwitch來建置。

Open vSwitch是一個虛擬化分散式多層交換器(Distributed Virtual Multilayer Switch)軟體,目前常見的用途是提供不同虛擬機器間連線的軟體交換器,例如同主機的不同虛擬機器或容器在網路連線時無須再經過實體的交換器,便能夠進行網路的溝通,可以有效強化網路連線的效率。

另外,由於整個Open vSwitch是由軟體組成,因此動態調校的彈性便比一般硬體Switch功能要強大許多,可以因應網路狀況進行適當的調整。圖8是Open vSwitch的架構圖。


▲圖8 Open vSwitch架構示意圖。

在CentOS 7中,由於官方並沒有正式支援Open vSwitch的套件,因此有一個方法是由Open vSwitch官網下載原始碼自行建置套件,Open vSwitch有提供建置CentOS/Red Hat套件的機制。

另一個方式則是經由網路下載由使用者建置好而貢獻出來的套件,此處選擇下載使用者已建置好貢獻的套件,可以從下列網址找到CentOS 7的Open vSwitch套件:

http://cbs.centos.org/koji/buildinfo?buildID=568

其中RPMS部分,x86_64那邊便有Open vSwitch的套件,只須下載第一個openvswitch-2.3.1-2.el7.x86_64.rpm套件即可,完整下載網址如下:

http://cbs.centos.org/kojifiles/packages/openvswitch/2.3.1/2.el7/x86_64/openvswitch- 2.3.1-2.el7.x86_64.rpm


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!