宋佳
1.云技術(shù)及Docker的優(yōu)勢
云主機(jī)作為云計算的產(chǎn)物,憑借其服務(wù)低成本,高可靠,按需租用,易管理的優(yōu)勢可全面地滿足中小型公司和企業(yè)對主機(jī)租用的需求。從一定程度上講,云主機(jī)就是一種在一組集群物理節(jié)點(diǎn)上通過虛擬化技術(shù)而實現(xiàn)的虛擬主機(jī),它作為按需租用的解決方案,可以在集群中大規(guī)模統(tǒng)一調(diào)度。普通用戶完全可以像操作普通主機(jī)一樣去進(jìn)行操作。
云主機(jī)相對于傳統(tǒng)物理主機(jī),用戶不需要提供硬件設(shè)備,降低了后期維護(hù)的成本。用戶按需付費(fèi),并且可以進(jìn)行自助操作,簡單方便。用戶不需要自行部署主機(jī)環(huán)境,需要做的只是按照需求申請?zhí)囟愋偷牟僮飨到y(tǒng)和環(huán)境,云主機(jī)的操作系統(tǒng)以及軟件環(huán)境都由云主機(jī)平臺進(jìn)行維護(hù)和管理,在資源不足時,只需申請資源變更即可[1]。云主機(jī)更加安全可靠,云主機(jī)是基于集群技術(shù)實現(xiàn)的,節(jié)點(diǎn)間具有硬件冗余,可以增加可靠性。另外,云主機(jī)還有自動遷移的功能,如果集群中一臺節(jié)點(diǎn)需要升級或者資源緊缺,該節(jié)點(diǎn)上的云主機(jī)可以遷移至其他資源寬裕的節(jié)點(diǎn)上,保證業(yè)務(wù)能夠正常運(yùn)行。隨著應(yīng)用場景的越來越復(fù)雜化,云主機(jī)系統(tǒng)也隨之顯現(xiàn)以下幾個特點(diǎn):
(1)環(huán)境多樣。用戶可以根據(jù)自身需求自助選擇不同類型的系統(tǒng)環(huán)境,比如ubuntud、debian或者centos來應(yīng)對各種復(fù)雜場景。另外,用戶也可以使用云主機(jī)系統(tǒng)部署自動化集成和部署項目,提高項目開發(fā)、測試、運(yùn)維的效率。
(2)資源可控。云主機(jī)系統(tǒng)可以實現(xiàn)對云主機(jī)的資源進(jìn)行控制,比如限制CPU核數(shù)、內(nèi)存大小、磁盤容量等。另外,存儲模式也可以進(jìn)行控制,通過云主機(jī)的資源控制可以達(dá)到優(yōu)化系統(tǒng)性能的目的。
(3)高效可伸縮。云主機(jī)是一種在一組集群物理節(jié)點(diǎn)上通過虛擬化技術(shù)而實現(xiàn)的虛擬主機(jī),能夠盡可能地發(fā)揮集群的優(yōu)勢,使得集群資源得到充分利用,系統(tǒng)顯得更加高效。
云計算提供的服務(wù)被劃分成了三個層次,目前,按照這個經(jīng)典的三層模型,眾多計算機(jī)行業(yè)巨頭已經(jīng)建立了一批“重型”云平臺,但是這種傳統(tǒng)的云平臺很難把握對其中的應(yīng)用的管控。在這個時候,Docker的容器思想給所有人一個驚喜,Docker模糊了IaaS和PaaS間的明確的界限,為云計算的發(fā)展提供了新的方向[2]?;诠俜降亩x,Docker是世界領(lǐng)先的“軟件集裝箱”平臺。開發(fā)人員使用Docker與同事協(xié)作開發(fā);運(yùn)營商使用Docker在獨(dú)立容器中并行運(yùn)行和管理應(yīng)用程序,以獲得更好的計算密度;企業(yè)使用Docker構(gòu)建敏捷軟件交付管道,以更快、更安全、更可靠地為Linux和Windows Server應(yīng)用程序提供新功能。
2.云主機(jī)上Docker的搭建
目前大部分云主機(jī)的虛擬化采用傳統(tǒng)的虛擬化技術(shù),Docker 容器技術(shù)逐漸模糊了IaaS和PaaS間分明的間隔,其輕量級虛擬化的特性一步步地把傳統(tǒng)的應(yīng)用開發(fā)和運(yùn)維機(jī)制變成了一種全新的方式。本人通過在linux服務(wù)器上通過docker實現(xiàn)多個系統(tǒng)環(huán)境的搭建與部署,進(jìn)而提升用戶對于云服務(wù)器的使用率,實現(xiàn)資源的最大利用。同時通過Docker關(guān)于鏡像和容器的備份和恢復(fù)以及容器和鏡像的創(chuàng)建,以達(dá)到開發(fā)環(huán)境和測試環(huán)境完全一致的目的地。
1.Docker技術(shù)
Docker 是一個開源的應(yīng)用容器引擎,是一個基于操作系統(tǒng)虛擬化的開源引擎,遵從Apache2.0協(xié)議。Docker使用經(jīng)典的C/S架構(gòu)。讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會有任何接口。Dokcer的守護(hù)程序主要負(fù)責(zé)運(yùn)行和分發(fā)Docker容器。
2.Docker鏡像及容器
如圖1所示,Docker的鏡像和容器采用的是分層結(jié)構(gòu)存儲,Docker的鏡像中并不存在完整的linux的內(nèi)核,里面包含的是Docker容器所需的文件系統(tǒng)結(jié)構(gòu)。簡言之,Docker 容器文件系統(tǒng)包括DockerFile、Docker鏡像、Docker容器;DockerFile是軟件的原材料,Docker鏡像是軟件的交付品,而Docker容器則可以認(rèn)為是軟件的運(yùn)行態(tài)。從應(yīng)用軟件的角度來看,DockerFile、Docker鏡像與Docker容器分別代表軟件的三個不同階段,DockerFile面向開發(fā),Docker鏡像成為交付標(biāo)準(zhǔn),Docker容器則涉及部署與運(yùn)維,三者缺一不可,合力充當(dāng)Docker體系的基石。
1.系統(tǒng)需求分析
在一臺云虛擬主機(jī)上通過Docker虛擬多個系統(tǒng)應(yīng)用環(huán)境,達(dá)到對虛擬機(jī)系統(tǒng)資源的最大利用。
2.服務(wù)器操作系統(tǒng)安裝要求
一臺云虛擬主機(jī)(系統(tǒng)版本Centos7.0)。
3.服務(wù)器軟件列表
所有的應(yīng)用軟件都封裝在DOCKER中(見表1)。
4.服務(wù)器配置
服務(wù)器建議配置如下(見表2)。
5.通過Docker滿足生產(chǎn)測試一致
(1)首先,創(chuàng)建了新的網(wǎng)段,即docker-meta并分配了對應(yīng)的ip地址,如下所示(見圖2)。
這樣一來,我們只講我們生產(chǎn)環(huán)境部分的容器放在該網(wǎng)段中,并且該網(wǎng)段的容器可以進(jìn)行相互訪問。
(2)我們通過Docker將之前在實際情況下需要三臺服務(wù)器進(jìn)行安裝的應(yīng)用安裝到對應(yīng)到對應(yīng)系統(tǒng)的Docker容器中(見圖3)。
如圖3中所示,我們將生產(chǎn)環(huán)境中的應(yīng)用程序分別封裝到了三個對應(yīng)的容器,即7dfee9b4d44d、96878dae9eb9和dee8f23b43e3。對于三個應(yīng)用所在的容器我們可理解為相當(dāng)于三個在云服務(wù)器上虛擬出來的虛擬主機(jī),類似于vmware上虛擬機(jī),但是容器相對于vmware上的虛擬機(jī)來說是非常輕量級的。通過docker口令將容器需要訪問的端口映射在服務(wù)器對應(yīng)的端口,類似”0.0.0.0:3333->3333/tcp”這樣的顯示就是將容器7dfee9b4d44d的3333端口映射到服務(wù)器的3333端口,當(dāng)服務(wù)器以為的用戶需要訪問容器7dfee9b4d44d中3333端口對應(yīng)的應(yīng)用時,只需要訪問云服務(wù)器對應(yīng)的地址下的3333端口就可以訪問此應(yīng)用??梢酝ㄟ^在云服務(wù)器上配置相應(yīng)的白名單來決定允許哪些ip下的用戶可以訪問該應(yīng)用。
(3)在云服務(wù)器上可以通過Docker口令備份Docker容器,再恢復(fù)出一個容器。我們可以將云服務(wù)器中生產(chǎn)環(huán)境下使用的容器備份到對應(yīng)的文件(見圖4)。
然后再在云服務(wù)器上設(shè)置不同于生產(chǎn)的網(wǎng)段和端口映射進(jìn)行恢復(fù)。這樣用于生產(chǎn)和測試的環(huán)境完全相同。這樣開發(fā)和測試可以使用完全相同的環(huán)境進(jìn)行測試,也節(jié)省了因為搭建服務(wù)器,或者系統(tǒng)版本不同導(dǎo)致測試結(jié)果而浪費(fèi)的時間。
(4)在不同的服務(wù)器上進(jìn)行容器恢復(fù),將容器文件上傳到安裝有docker的服務(wù)器上,然后通過docker命令直接恢復(fù)文件備份前系統(tǒng)中運(yùn)行的完全一致的容器。
本文通過對Docker官方文檔的學(xué)習(xí),在云服務(wù)器上實現(xiàn)了Docker創(chuàng)建生產(chǎn)環(huán)境下容器,以及Docker容器的網(wǎng)絡(luò)配置;以及通過Docker實現(xiàn)容器的快速備份、遷移和還原操作,從而實現(xiàn)在生產(chǎn)和測試環(huán)境下應(yīng)用程序和環(huán)境的一致性。后續(xù)將考慮使用Docker Swarm實現(xiàn)Docker集群配置。
[1]林 慰.傳統(tǒng)IDC與云主機(jī)結(jié)合的前景[J].數(shù)字通信世界,2015(8).
[2]浙江大學(xué)SEL實驗室.Docker容器與容器云[M].北京:人民郵電出版社,2015,28-80.