強焜
摘 要:Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包它們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。由于Docker和VNC的客戶端軟件都是開源的產(chǎn)品,這樣就節(jié)省了初期購買虛擬化軟件的費用。在一臺服務(wù)器上搭建好Docker的環(huán)境,其余電腦通過VNC客戶端來訪問服務(wù)器上的虛擬化應(yīng)用。
關(guān)鍵詞:Docker;虛擬化;容器
近年來,隨著計算機硬件配置的提升和虛擬化技術(shù)的普及,越來越多的院校在新建計算機房時都考慮使用虛擬化云桌面技術(shù),在新機房部署云桌面有諸多優(yōu)點:定制桌面軟件環(huán)境方便;簡化服務(wù)器的部署、管理和維護工作,降低管理費用;提高服務(wù)器資源的利用率;提高服務(wù)器計算能力;在不中斷用戶工作的情況下進行系統(tǒng)更新;支持快速轉(zhuǎn)移和復(fù)制虛擬服務(wù)器,提供一種簡單便捷的災(zāi)難恢復(fù)解決方案等。但對于現(xiàn)有舊機房的改造來說,完全廢棄舊有電腦全部更新為瘦客戶機云桌面模式或采用在舊電腦上運行虛擬化的桌面都有一些的不足。
不論采用哪種方式,桌面虛擬化的初始成本較高。降低成本是很多人對桌面虛擬化所帶來好處的第一反應(yīng),不過這成本需要具體的分析。桌面虛擬化并不是免費的,初始成本并不低,要進行基礎(chǔ)架構(gòu)的改造,要額外的付出桌面虛擬化的相關(guān)軟件和許可費用,而操作系統(tǒng)的授權(quán)還一個不能少,應(yīng)用軟件也是根據(jù)虛擬桌面數(shù)量來授權(quán)的,這方面與物理桌面沒有什么區(qū)別。對一間配置較低的舊電腦機房進行桌面虛擬化改造,其軟件成本并不比新建一間機房低多少,對于一些只跑一些輕量化應(yīng)用的機房來說,這種改造顯得成本較高。
1 Docker技術(shù)
Docker是一個高級容器引擎,Docker的核心是LXC,它在LXC之上做了進一步封裝,重點提高了標準化和可移植性,基于go語言開發(fā),并且遵循了Apache2.0協(xié)議開源規(guī)范。LXC技術(shù)是一種輕量級的虛擬化技術(shù),它可以在單個宿主機操作系統(tǒng)上同時運行多個Linux系統(tǒng),在隔離方面,使用cgroups技術(shù)來實現(xiàn)處理器、硬盤、內(nèi)存、網(wǎng)絡(luò)等設(shè)備的隔離。
2 Docker與傳統(tǒng)虛擬化技術(shù)的區(qū)別
Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包它們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。通俗地說,一個做好的應(yīng)用容器長得就好像一個裝好了一組特定應(yīng)用的虛擬機一樣。例如當你需要使用MySQL環(huán)境時,只需裝好MySQL的容器,運行起來,就可以使用 MySQL了。容器是完全使用沙箱機制,相互之間不會有任何接口,幾乎沒有性能開銷,可以很容易地在機器和數(shù)據(jù)中心中運行。通常Docker容器的啟動速度都能達到在1秒內(nèi)啟動,而VM往往需要較久的啟動時間;Docker占用的資源很少,1臺普通性能的服務(wù)器能夠跑成百上千個容器,這也是VM較難達到的。
3 通過Docker構(gòu)建輕量化應(yīng)用機房
某院校電子閱覽室電腦已使用近5年,平時主要用于學(xué)生上網(wǎng)訪問數(shù)字資源使用,隨著瀏覽器等軟件的硬件資源占用加大,目前的電腦配置運行起來比較緩慢,已無法滿足使用需求。由于應(yīng)用的需求比較單一,如果采用虛擬化云桌面的方案進行升級改造,需要購置服務(wù)器及VM軟件等,前期投入較大,對于輕量化應(yīng)用來說性價比不高。嘗試使用Dcoker容器封裝瀏覽器等應(yīng)用鏡像,配合VNC遠程訪問應(yīng)用。
目前Linux上比較主流的圖形界面服務(wù)是X11,而X11服務(wù)的圖形顯示方式實際上是一種C/S模式,在服務(wù)端和客戶端之間,X11通過(DISPLAY)環(huán)境變量來指定將圖形顯示到何處?;谶@個原理,將Docker中的GUI程序顯示到外面,就是通過某種方式把X11的客戶端的內(nèi)容從容器里面?zhèn)鬟f出來。X11服務(wù)默認只允許來自本地的用戶啟動的圖形程序?qū)D形顯示在當前屏幕上,需要進行修改允許所有用戶訪問X11服務(wù)。
VNC (Virtual Network Console)是虛擬網(wǎng)絡(luò)控制臺的縮寫。由著名的AT&T的歐洲研究實驗室開發(fā)。VNC是在基于UNIX和Linux操作系統(tǒng)的免費的開源軟件,遠程控制性能強大,高效實用,其性能能與Windows和MAC遠程控制軟件媲美。
由于Docker和VNC的客戶端軟件都是開源的產(chǎn)品,這樣就節(jié)省了初期購買虛擬化軟件的費用。在一臺服務(wù)器上搭建好Docker的環(huán)境,其余電腦通過VNC客戶端來訪問服務(wù)器上的虛擬化應(yīng)用。
實驗中以ubuntu系統(tǒng)容器化作為測試,在服務(wù)器上搭建ubuntu的Docker,讓10臺舊的配置不高的電腦訪問。首先構(gòu)建ubuntu鏡像容器,往容器里面安裝用戶自己的應(yīng)用軟件。鏡像中的程序可以是從代碼編譯的、從網(wǎng)上下載的、或者直接通過apt-get安裝的。安裝好后,只需要要將需要運行的GUI軟件啟動命令設(shè)置到“APP_START”變量中就可以了。Docker鏡像的創(chuàng)建有兩種,一是使用docker commit命令,二是使用dockerfile文件和docker build命令來創(chuàng)建。以chrome瀏覽器為例,構(gòu)建chrome鏡像后,加上標簽,然后啟動一個容器實例,并將它映射到外部的端口,客戶機電腦通過VNC軟件連接這個地址端口,就可以訪問chrome瀏覽器了,不同的客戶機通過連接不同的端口來訪問不同的容器,互不干擾。
由于所有配置的操作都在服務(wù)器電腦上完成,就省去了部分在客戶機上安裝軟件等的維護工作,便于管理員管理。同時,由于Docker有啟動速度快的優(yōu)勢,在配置較低的客戶機上通過VNC連接容器,啟動chrome的速度比在本機上直接運行chrome程序更快,緩解了客戶機電腦配置不足的壓力。在內(nèi)存占用上,由于容器的輕量化,對服務(wù)器的內(nèi)存需求很低,在服務(wù)器上可以運行更多的容器,節(jié)約了在服務(wù)器硬件配置上的投入。在安全性上,Docker中部分目錄下的資源是與宿主機共用的,而且多個容器與宿主機共用同一個內(nèi)核,所以Docker的隔離程度不如VM等虛擬化方式;Docker通過內(nèi)核的namespace,包括進程、網(wǎng)絡(luò)、進程間通信信號、文件系統(tǒng)、用戶等,不同的Docker使用不同的namespace,在安全性上面已經(jīng)得到很大的提升。綜上所述,基于Docker構(gòu)建的虛擬化能滿足一些輕量化應(yīng)用機房的需求。
4 結(jié)束語
經(jīng)過測試,作為一種新的虛擬化技術(shù),Docker以其極小的性能損耗、快速的啟動速度和優(yōu)秀的可移植性在很多場合顯現(xiàn)出了相對傳統(tǒng)虛擬機技術(shù)的優(yōu)勢。當然,其還存在較多局限性,如只能虛擬linux下的應(yīng)用,對Windows下的應(yīng)用支持不好,可用的應(yīng)用較少等,相信隨著Docker技術(shù)的不斷發(fā)展,在應(yīng)用本身越來越成為市場核心的將來,Docker的應(yīng)用將越發(fā)廣泛。