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