陳軍相 李桂杰
(杭州電子科技大學(xué)圖書(shū)館 浙江杭州 310018)
虛擬化及Docker輕量容器技術(shù)在高校圖書(shū)館中的應(yīng)用*
陳軍相 李桂杰
(杭州電子科技大學(xué)圖書(shū)館 浙江杭州 310018)
以云計(jì)算技術(shù)的不斷發(fā)展為切入點(diǎn),介紹了Docker輕量容器技術(shù)的基本內(nèi)容,進(jìn)而介紹了高校圖書(shū)館數(shù)據(jù)管理過(guò)程中所采用的虛擬化技術(shù)的現(xiàn)狀,并指出目前多數(shù)高校采用的完全虛擬化技術(shù)存在的問(wèn)題。隨后指出了Docker容器技術(shù)是如何來(lái)破解這些問(wèn)題的。由于Docker是新興的容器技術(shù),所以依然存在很多需要完善的功能。最后,結(jié)合重量化虛擬技術(shù)以及Docker容器技術(shù)的發(fā)展現(xiàn)狀,對(duì)Docker在高校圖書(shū)館中的應(yīng)用作了發(fā)展展望。
Docker;虛擬化;圖書(shū)館應(yīng)用管理;應(yīng)用安全
隨著虛擬化技術(shù)的不斷發(fā)展,云計(jì)算服務(wù)已經(jīng)獲得了快速的發(fā)展,并且在商業(yè)領(lǐng)域獲得了非常廣泛的應(yīng)用。云計(jì)算服務(wù)目前可分為公有云、私有云、混合云。公有云構(gòu)建在互聯(lián)網(wǎng)之上,任何已付費(fèi)的用戶都可以訪問(wèn)[1]。國(guó)外有亞馬遜云服務(wù)(Amazon Web Services)、谷歌應(yīng)用程序引擎(Google App Engine)、微軟的Azure。國(guó)內(nèi)也有阿里云、騰訊云等云服務(wù)提供商等。私有云構(gòu)建在局域網(wǎng)內(nèi)部,私有云的可訪問(wèn)權(quán)限制在一定的范圍內(nèi),可以為本地用戶提供靈活的、敏捷的私有云基礎(chǔ)設(shè)施[2]。云計(jì)算服務(wù)的發(fā)展極大地依賴于虛擬化技術(shù),同時(shí)反過(guò)來(lái)促進(jìn)了虛擬化技術(shù)的發(fā)展。虛擬化技術(shù)包括完全虛擬化技術(shù)、半虛擬化技術(shù)和容器技術(shù)。完全虛擬化技術(shù)是通過(guò)虛擬機(jī)監(jiān)視器對(duì)底層的硬件資源進(jìn)行管理,將單個(gè)物理主機(jī)分成若干個(gè)相互獨(dú)立的部分,每個(gè)部分對(duì)應(yīng)一臺(tái)獨(dú)立的虛擬機(jī),虛擬機(jī)上運(yùn)行獨(dú)立的操作系統(tǒng),從而有效利用主機(jī)的物理資源[3]。半虛擬化在完全虛擬化的基礎(chǔ)上,把客戶操作系統(tǒng)進(jìn)行了修改,增加了一個(gè)專門(mén)的應(yīng)用程序接口,將客戶操作系統(tǒng)發(fā)出的指令進(jìn)行了優(yōu)化。容器技術(shù)則為應(yīng)用程序提供了隔離的運(yùn)行空間,每個(gè)容器內(nèi)都包含一個(gè)獨(dú)享的用戶空間,對(duì)容器的變動(dòng)并不會(huì)影響其他容器的運(yùn)行,也就是說(shuō),容器技術(shù)采用的是一種輕量化的虛擬化。Dock-er則是容器技術(shù)的最典型代表,它不依賴于任何操作系統(tǒng)、開(kāi)發(fā)框架和程序語(yǔ)言,具有將應(yīng)用程序及所需要的環(huán)境快速打包發(fā)布的能力。
2.1 完全虛擬化技術(shù)和半虛擬化
完全虛擬化技術(shù)又叫硬件輔助虛擬化,在虛擬機(jī)和宿主計(jì)算機(jī)之間加入了一個(gè)軟件層Hypervisor,即虛擬機(jī)管理程序[4]。完全虛擬化技術(shù)可以追溯到20世紀(jì)六七十年代,IBM對(duì)大型機(jī)所進(jìn)行的虛擬化研究。完全虛擬化技術(shù)由于云計(jì)算的快速發(fā)展而得到了廣泛應(yīng)用和發(fā)展。完全虛擬化的Hypervisor可以分為兩種類(lèi)型。第一種類(lèi)型是Hypervisor直接運(yùn)行在物理硬件之上,這種類(lèi)型的虛擬機(jī)如KVM(Kernelbased Virtual Machine)。KVM本身就是一個(gè)基于操作系統(tǒng)的虛擬機(jī)管理程序。第二種是Hypervisor運(yùn)行在另一個(gè)操作系統(tǒng)中,這種類(lèi)型的虛擬機(jī)管理程序包括了QEMU和WINE。圖1所示即是第二種類(lèi)型的完全虛擬化的結(jié)構(gòu)示意圖。
圖1 完全虛擬化示意圖
宿主機(jī)操作系統(tǒng)運(yùn)行在硬件資源之上,并且通過(guò)虛擬機(jī)管理程序,將硬件資源進(jìn)行統(tǒng)一分配和管理,然后重新劃分給各虛擬機(jī)。虛擬機(jī)操作系統(tǒng)的指令需要經(jīng)過(guò)虛擬機(jī)管理程序的捕獲,并被翻譯成CPU能識(shí)別的指令格式。因此,虛擬機(jī)管理程序的負(fù)荷很大,會(huì)占用一定的資源。
半虛擬化是在完全虛擬化的基礎(chǔ)上,對(duì)客戶端操作系統(tǒng)進(jìn)行了修改,增加了一個(gè)專門(mén)的API。該API對(duì)客戶操作系統(tǒng)發(fā)來(lái)的指令進(jìn)行了最優(yōu)化,使虛擬機(jī)管理程序不需要耗費(fèi)太多的資源進(jìn)行翻譯,因此,Hypervisor的工作負(fù)擔(dān)變得非常小,那么整體的性能將有很大的提高。半虛擬化的缺點(diǎn)是需要修改包含API的操作系統(tǒng)。對(duì)于不包含該API的操作系統(tǒng)而言,就不能使用該方法。因?yàn)槿鏦indows這樣的操作系統(tǒng)由于版權(quán)政策等使得內(nèi)核是沒(méi)辦法修改的。
2.2 容器技術(shù)
容器虛擬化技術(shù)已經(jīng)成為一種被大家廣泛認(rèn)可的服務(wù)器資源共享方式,通過(guò)容器技術(shù)可以按需構(gòu)建操作系統(tǒng)實(shí)例[5]。最為重要的是,容器技術(shù)可同時(shí)將操作系統(tǒng)鏡像和應(yīng)用程序加載到內(nèi)存當(dāng)中,同時(shí)容器技術(shù)還可以從網(wǎng)絡(luò)磁盤(pán)中進(jìn)行加載。目前容器虛擬化技術(shù)的典型代表是Mesos和Docker。Mesos主要利用操作系統(tǒng)本身的一些特性如cgroup、namespace等來(lái)實(shí)現(xiàn)對(duì)容器的隔離。Docker則主要使用Docker應(yīng)用程序接口來(lái)進(jìn)行容器管理。尤其是Docker的發(fā)展非常迅速,已經(jīng)成為了一個(gè)產(chǎn)業(yè)標(biāo)準(zhǔn)。圍繞Docker的生態(tài)圈已經(jīng)形成,圍繞Docker的很多開(kāi)源項(xiàng)目正處于開(kāi)發(fā)中,包括容器操作系統(tǒng)、系統(tǒng)監(jiān)測(cè)、應(yīng)用程序開(kāi)發(fā)平臺(tái)、開(kāi)發(fā)工具、大數(shù)據(jù)、網(wǎng)絡(luò)等。Docker容器虛擬化技術(shù)的基本結(jié)構(gòu)如圖2所示。
圖2 Docker容器虛擬化示意圖
虛擬化技術(shù)在國(guó)內(nèi)高校圖書(shū)館的應(yīng)用出現(xiàn)快速增長(zhǎng)的趨勢(shì),很多高校圖書(shū)館已經(jīng)或正在進(jìn)行服務(wù)器的虛擬化部署[6],即通過(guò)虛擬機(jī)管理程序?qū)ξ锢矸?wù)器進(jìn)行整合統(tǒng)一管理,利用虛擬化軟件進(jìn)行軟硬件資源的劃分,分配給硬件之上的虛擬機(jī),并進(jìn)行資源優(yōu)化與管理。在2013年的一項(xiàng)調(diào)查中,就12所已經(jīng)在數(shù)字化過(guò)程中采取虛擬化技術(shù)的高校進(jìn)行了統(tǒng)計(jì),分別采用了Vmware Vshpere、Microsoft Hyper-V、Critix XenServer等VMM架構(gòu)。虛擬機(jī)和物理主機(jī)的虛擬化比率都在3:1以上,三分之一被統(tǒng)計(jì)的高校圖書(shū)館的虛擬機(jī)和物理主機(jī)達(dá)到了5:1的虛擬化程度。
這些虛擬化技術(shù)在高校圖書(shū)館的應(yīng)用給圖書(shū)館日常服務(wù)器的管理與維護(hù)帶來(lái)了極大的方便。虛擬化平臺(tái)的部署極大地減輕了管理和運(yùn)營(yíng)負(fù)擔(dān),降低了軟硬件升級(jí)和老化的壓力,提高了服務(wù)的可用性,使得運(yùn)維人員可以通過(guò)VMware這樣的虛擬機(jī)管理程序進(jìn)行統(tǒng)一管理,進(jìn)行虛擬機(jī)的創(chuàng)建、部署、刪除等等操作。圖3為某高校圖書(shū)館虛擬機(jī)管理軟件VMware的管理界面。
圖3 某高校VMware管理界面
但是利用Vmware等完全虛擬化技術(shù)依然面臨著一些問(wèn)題:如客戶虛擬機(jī)采用共享的方式分享物理主機(jī)的資源,客戶虛擬機(jī)操作系統(tǒng)占用資源的大小與物理PC機(jī)類(lèi)似,因此其虛擬化率被限制在一定數(shù)量,否則客戶虛擬機(jī)的響應(yīng)速度會(huì)受到一定的影響,也就是說(shuō),其虛擬化率被限制在一定的范圍內(nèi)。
通過(guò)VMware這樣的虛擬化軟件可以進(jìn)行虛擬機(jī)的創(chuàng)建與刪除,從而進(jìn)行虛擬機(jī)的快照管理。但是完全虛擬化技術(shù)在日常運(yùn)營(yíng)管理過(guò)程中依然存在一定的問(wèn)題,主要有以下幾個(gè)方面:
(1)是一種重量化的虛擬化方式
一臺(tái)虛擬機(jī)就和一臺(tái)物理機(jī)一樣,邏輯上有相應(yīng)的虛擬硬件。如果一個(gè)應(yīng)用單獨(dú)放在一臺(tái)虛擬機(jī)上運(yùn)行,那么相應(yīng)要?jiǎng)澐纸o虛擬機(jī)完整的硬件資源,因此硬件利用率不高。如果多個(gè)應(yīng)用運(yùn)行在一臺(tái)虛擬機(jī)上,存在多個(gè)應(yīng)用共享同一個(gè)運(yùn)行時(shí)環(huán)境。如果一個(gè)應(yīng)用出現(xiàn)問(wèn)題,對(duì)該應(yīng)用的環(huán)境配置可能會(huì)影響其他應(yīng)用的運(yùn)行。
(2)數(shù)據(jù)的遷移不方便
雖然提供了虛擬機(jī)模板這樣的方式來(lái)復(fù)制虛擬機(jī)和保存虛擬機(jī)的運(yùn)行時(shí)環(huán)境,但數(shù)據(jù)的遷移通過(guò)這種方式也是一種重量化的操作。數(shù)據(jù)的運(yùn)行環(huán)境的遷移難以跨平臺(tái)操作。如在windows環(huán)境中的虛擬機(jī)難以遷移到linux環(huán)境中運(yùn)行。
(3)虛擬機(jī)上的應(yīng)用由于各種原因需要重新安裝或升級(jí)時(shí),需要重新開(kāi)始進(jìn)行應(yīng)用環(huán)境的配置
如集群中的一臺(tái)虛擬機(jī)安裝了多種應(yīng)用,由于木馬等病毒的原因需要關(guān)閉虛擬機(jī),然后重新開(kāi)始配置虛擬機(jī)的運(yùn)行時(shí)環(huán)境,那么采用完全虛擬化的方式需要重新創(chuàng)建一臺(tái)虛擬機(jī),重新配置環(huán)境,這個(gè)工作量有時(shí)侯很大。
以杭州電子科技大學(xué)圖書(shū)館為例,該館將很多的圖書(shū)館業(yè)務(wù)系統(tǒng)放在基于網(wǎng)絡(luò)開(kāi)發(fā)訪問(wèn)的虛擬機(jī)中運(yùn)行。2015年上半年通過(guò)網(wǎng)絡(luò)中心的漏洞掃描,發(fā)現(xiàn)圖書(shū)館的隨書(shū)光盤(pán)系統(tǒng)存在安全問(wèn)題。多數(shù)高校圖書(shū)館都在使用的匯文圖書(shū)管理軟件,最近也是經(jīng)常被報(bào)出存在安全漏洞問(wèn)題,如匯文OPAC敏感信息泄露、匯文libsys圖書(shū)管理系統(tǒng)SQL注入等安全問(wèn)題。對(duì)于被病毒感染的虛擬機(jī)的操作就是刪除,然后重新創(chuàng)建或從模板中部署,工作量也較大。
近年出現(xiàn)的容器技術(shù)充分利用操作系統(tǒng)本身已有的機(jī)制和特性來(lái)實(shí)現(xiàn)輕量級(jí)的虛擬化。Docker則是輕量容器技術(shù)的佼佼者。Docker是基于Go語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目。通過(guò)Docker能高效地構(gòu)建應(yīng)用,能夠通過(guò)Docker方便地創(chuàng)建運(yùn)行在云平臺(tái)上的應(yīng)用;通過(guò)Docker容器技術(shù),可以實(shí)現(xiàn)應(yīng)用完全脫離底層機(jī)器,并且在“任何時(shí)間任何地點(diǎn)”都能獲取到。假設(shè)在一個(gè)常用的應(yīng)用場(chǎng)景中,一個(gè)用戶試著以LAMP(Linux+Apache+MySQL+PHP)的方式來(lái)運(yùn)行和維護(hù)一個(gè)網(wǎng)站,那么該用戶必須要先安裝Apache、MySQL、PHP以及各自依賴的環(huán)境,然后進(jìn)行環(huán)境參數(shù)等的配置。配置完成,運(yùn)行正常后,一旦需要服務(wù)器遷移,那么往往需要重新進(jìn)行部署和調(diào)試。Docker則以另一種方式來(lái)進(jìn)行,通過(guò)容器來(lái)打包應(yīng)用,也就是應(yīng)用的遷移只需在新的服務(wù)器上重新啟動(dòng)需要的容器即可。Docker容器的虛擬化方式如圖4所示。
在Docker的虛擬化方式中,最下層是硬件基礎(chǔ)設(shè)施,硬件基礎(chǔ)設(shè)施之上是操作系統(tǒng),操作系統(tǒng)上運(yùn)行著Docker引擎,Docker引擎運(yùn)行和管理著多個(gè)隔離的容器,每個(gè)容器中有各種應(yīng)用的運(yùn)行時(shí)環(huán)境,運(yùn)行時(shí)環(huán)境上運(yùn)行著各種應(yīng)用。
圖4 Docker容器的虛擬化方式
與容器技術(shù)相比,傳統(tǒng)的虛擬機(jī)方式多了一層虛擬機(jī)操作系統(tǒng)的隔離。但這并不意味著Docker容器就不安全。Docker充分利用了Linux系統(tǒng)上的多種防護(hù)機(jī)制,實(shí)現(xiàn)了嚴(yán)格可靠的隔離。Docker具有啟動(dòng)速度更快、性能更接近原生系統(tǒng)、單機(jī)支持上千個(gè)容器等特點(diǎn)。那么如果能將圖書(shū)館的更多應(yīng)用通過(guò)Docker容器進(jìn)行發(fā)布,同時(shí)將容器制作成鏡像進(jìn)行管理,那么即使容器內(nèi)的應(yīng)用被病毒感染或程序崩潰,只需通過(guò)鏡像管理就可以直接將容器進(jìn)行恢復(fù)。因此,通過(guò)容器技術(shù)可以更快捷有效地進(jìn)行圖書(shū)館應(yīng)用程序的管理與維護(hù)。
盡管Docker有快捷、方便等優(yōu)點(diǎn),Docker容器技術(shù)依然存在一些問(wèn)題:
(1)Docker是基于Linux操作系統(tǒng)的,目前沒(méi)有辦法進(jìn)行Windows系統(tǒng)的鏡像制作與管理。
(2)Docker鏡像在與其他網(wǎng)絡(luò)上的設(shè)備進(jìn)行通信時(shí),需要通過(guò)端口映射的方式將鏡像端口與宿主操作系統(tǒng)的端口進(jìn)行對(duì)應(yīng)。
因此,綜合考慮到高校圖書(shū)館服務(wù)器虛擬化已經(jīng)有很多以Windows操作系統(tǒng)運(yùn)行的完全虛擬化的虛擬機(jī),采用Docker方式來(lái)完全替代原來(lái)的虛擬化方式是不現(xiàn)實(shí)的,也是沒(méi)有必要的。
筆者認(rèn)為,高校圖書(shū)館虛擬化方式可以向傳統(tǒng)虛擬機(jī)方式與Docker容器技術(shù)結(jié)合的方式發(fā)展。在傳統(tǒng)虛擬機(jī)VMware等軟件進(jìn)行硬件基礎(chǔ)設(shè)施的虛擬化的基礎(chǔ)上,然后在虛擬機(jī)操作系統(tǒng)中運(yùn)行Docker引擎,再利用Docker容器技術(shù)分離出多個(gè)容器來(lái)運(yùn)行各種圖書(shū)館的應(yīng)用程序。虛擬化方式如圖5所示。
圖5 傳統(tǒng)虛擬化方式與Docker結(jié)合
V傳統(tǒng)的虛擬化方式與Docker輕量容器技術(shù)結(jié)合,在傳統(tǒng)虛擬機(jī)上運(yùn)行Docker,并在Docker引擎之上運(yùn)行多個(gè)Docker容器。容器中運(yùn)行相對(duì)獨(dú)立的應(yīng)用程序,這樣就可以實(shí)現(xiàn)應(yīng)用程序之間的隔離,同時(shí)實(shí)現(xiàn)各個(gè)應(yīng)用的跨平臺(tái)遷移。容器間的隔離可以有效避免應(yīng)用程序之間的相互干擾,有效增強(qiáng)系統(tǒng)的安全性與穩(wěn)定性。
那么這種基于傳統(tǒng)虛擬化方式的Docker容器是如何實(shí)現(xiàn)的呢?以在其中一臺(tái)虛擬機(jī)的一個(gè)容器中運(yùn)行一個(gè)基于Apache2的網(wǎng)站為例,如在一臺(tái)虛擬機(jī)上安裝有Ubuntu 15.04,在這個(gè)系統(tǒng)中安裝Docker,然后通過(guò)運(yùn)行sudodocker pull ubuntu命令從DockerHub倉(cāng)庫(kù)下載一個(gè)最新的Ubuntu操作系統(tǒng)的鏡像。然后通過(guò)運(yùn)行如下圖所示的命令來(lái)進(jìn)入該容器。通過(guò)該命令,將把cjx-virtual-machine這臺(tái)虛擬機(jī)的81端口映射到容器中的80端口。
通過(guò)這樣的方式,網(wǎng)站的代碼運(yùn)行在虛擬機(jī)操作系統(tǒng)cjx-virtual-machine中,通過(guò)端口的映射后,使外網(wǎng)可以訪問(wèn)該網(wǎng)站。在網(wǎng)站系統(tǒng)及應(yīng)用的開(kāi)發(fā)過(guò)程中,添加數(shù)據(jù)庫(kù)等功能后,就可使每個(gè)容器單獨(dú)運(yùn)行在一個(gè)容器中。然后就可以通過(guò)創(chuàng)建鏡像來(lái)打包容器,并放到鏡像倉(cāng)庫(kù)中。因此可使網(wǎng)站具有跨平臺(tái)的可遷移性,并且網(wǎng)站代碼及配置環(huán)境與其他網(wǎng)站或應(yīng)用相隔離。由于每個(gè)鏡像所占的容量都較小,一臺(tái)虛擬機(jī)上可以運(yùn)行很多個(gè)容器,所以,通過(guò)這樣的方式,可以有效地將應(yīng)用隔離開(kāi)來(lái)。
圖6 訪問(wèn)容器中的網(wǎng)站
目前,越來(lái)越多的基于互聯(lián)網(wǎng)的高校圖書(shū)館應(yīng)用時(shí)不時(shí)會(huì)面臨安全問(wèn)題,高校圖書(shū)館的業(yè)務(wù)系統(tǒng)也不例外。如果多個(gè)應(yīng)用程序運(yùn)行在同一臺(tái)電腦或虛擬機(jī)上,多個(gè)應(yīng)用程序的運(yùn)行環(huán)境互相重疊,一個(gè)軟件應(yīng)用出現(xiàn)安全問(wèn)題,需要重新配置環(huán)境等,勢(shì)必會(huì)對(duì)其他軟件應(yīng)用產(chǎn)生影響。因此,通過(guò)單獨(dú)的軟件應(yīng)用運(yùn)行在單獨(dú)的容器中,其軟硬件的資源代價(jià)是相對(duì)較少的,并且通過(guò)這樣的方式可以提高軟件的可移植性。
隨著linux的發(fā)展及輕量虛擬化技術(shù)的發(fā)展,類(lèi)似Docker的輕量容器技術(shù)將會(huì)得到廣泛的應(yīng)用。結(jié)合目前多數(shù)高校圖書(shū)館的軟硬件現(xiàn)狀,以及最新的容器技術(shù)的特點(diǎn),筆者認(rèn)為,在傳統(tǒng)虛擬機(jī)的基礎(chǔ)上使用Docker等輕量化的容器技術(shù)來(lái)運(yùn)行圖書(shū)館業(yè)務(wù)系統(tǒng)應(yīng)用,必將提高圖書(shū)館系統(tǒng)的安全性及系統(tǒng)的可移植性。
[1]孔楠.基于云計(jì)算平臺(tái)的商業(yè)服務(wù)模式研究[D].上海:上海外國(guó)語(yǔ)大學(xué),2010.
[2]李輝.基于OpenStack的私有云計(jì)算平臺(tái)的研究和實(shí)現(xiàn)[D].南昌:江西師范大學(xué),2013.
[3]劉熙,胡志勇.基于Docker容器的Web集群設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2016(8):117-119.
[4]崔征.虛擬化技術(shù)在高校數(shù)據(jù)中心的應(yīng)用[J].河北公安警察職業(yè)學(xué)院學(xué)報(bào),2013(2):67-70.
[5]馬越,黃剛.基于Docker的應(yīng)用軟件虛擬化研究[J].軟件,2015(3):10-14.
[6]張蓓.虛擬化技術(shù)在高校圖書(shū)館數(shù)字化中的應(yīng)用[D].西安:西安工業(yè)大學(xué),2013.
On Application of Virtualization and Docker in Data Management of University Libraries
This paper introduces the continuous development of cloud computing and the Docker container technology.Then it talks about the current state of virtualization technologies applied in data management of university libraries,and points out main problems of full virtualization technologies that are used by most universities.After that,this paper explains how Docker solves these problems.Also,this paper admits that Docker is a newly developed lightweight container technology,and has many functions yet to be improved.At last,this paper expresses expectations for use of Docker technology in university libraries.
Docker;virtualization;library application management;application security
G258.6;TP308
A
陳軍相(1980—),男,杭州電子科技大學(xué)工程師;李桂杰(1967—),女,杭州電子科技大學(xué)副教授。
2016-09-28
★本文系浙江省教育廳項(xiàng)目“高校圖書(shū)館移動(dòng)參考咨詢系統(tǒng)的模型設(shè)計(jì)與實(shí)現(xiàn)研究”(項(xiàng)目編號(hào):Y201533083)的成果之一。