国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

初識DOCKER容器技術

2019-08-13 09:09金琦
中國信息技術教育 2019年14期
關鍵詞:應用服務鏡像虛擬化

金琦

編者按:在國家教育信息化政策的大力支持下,很多區(qū)域教育技術中心或學校都在積極開展或籌建教育云平臺大數據發(fā)展工作,教育云平臺和大數據建設已成為未來教育信息化發(fā)展的重要趨勢。但智慧校園發(fā)展遇到諸如學校運維受限、軟件部署繁瑣、硬件資源浪費、數據孤島、使用率低下等困惑,而引入容器技術作為目前已經普遍實施的服務器虛擬化技術的有效補充,既能保障主機的安全、穩(wěn)定和高可用性,又能實現業(yè)務應用的快速靈活部署和輕量高效運行,從而使教育部門可以獲得真正標準化的可持續(xù)更新的流程和數據資產。接下來本欄目將分兩期對容器技術進行探討。

● 數據中心應用服務現狀

容器技術在最近幾年都是一個非常熱門的話題,目前越來越多的公司都向學校提出基于容器技術的智慧校園解決方案。要探討容器技術,我們避免不了回顧容器技術產生的背景。

2010年前我們中小學數據業(yè)務服務器架構基本上是如圖1所示的模式。

這種模式下我們面臨以下問題:①部署成本高。我們要準備相應物理服務器,然后在物理服務器上安裝Windows或者Linux操作系統,安裝各式系統環(huán)境的依賴,再在操作系統中部署學校各類業(yè)務應用,這樣的部署非常慢,而且成本非常高。②資源浪費嚴重。對于學校來說大部分業(yè)務與系統消耗的資源非常小,為避免應用程序自身的安全隱患影響同一服務器上其他應用程序的運行,通常在每一臺服務器上只運行一種應用程序,所以大多數服務器的利用率比較低,造成資源的浪費。③更新和擴展困難。例如,要更新服務器,要對相應的業(yè)務應用進行遷移,除了重復之前繁冗的部署之外,老的業(yè)務應用未必能適應新的硬件架構和新的操作系統環(huán)境。又如,要對服務器進行資源擴展(閱卷系統有增加閱卷量需求,需要增加內存和存儲讀寫效率),這樣又要對物理服務器的資源去做擴展,這也是非常麻煩的。

隨著技術的發(fā)展,2010年后各學校逐漸應用虛擬化技術來解決學校數據中心面對上述傳統物理服務器應用面臨的各式瓶頸(如圖2)。

首先,我們先了解虛擬化技術的實現方式。虛擬化技術就是在原先的物理服務器上,通過一種運行在基礎物理服務器和操作系統之間的中間軟件層(Hypervisor)去做物理資源虛擬化,即Hypervisor會加載所有客戶端操作系統,同時會分配給每一個客戶機操作系統適量的物理資源(內存、CPU、網絡、磁盤)。這些被調度相應物理資源的操作系統其實就是我們常說的虛擬機。一般來說,物理主機底層的物理資源是比較豐富的,這樣可以通過虛擬化這一層去實現不同虛擬機之間的資源調度,如根據業(yè)務應用實際需要,就可以讓某個業(yè)務應用運行在單獨的一個虛擬機里面,分配一個低業(yè)務應用虛擬機使用1核CPU、4G內存,然后另外一個相對高業(yè)務應用虛擬機使用2核CPU、8G內存,這樣就可以做物理資源的一個限定和隱形的調度,從而實現物理資源利用率的最大化。再總結虛擬化技術的優(yōu)點:首先是提出資源池的概念,可以把整個物理資源分配到不同的虛擬機里面,然后去做物理資源的有效管理。

其次,我們可以很容易進行擴展,當物理資源不夠時,可以去資源池里加物理機,然后在這臺物理機上再創(chuàng)建虛擬機,因為有了Hypervisor這樣的中間層完成了物理主機和虛擬機之間的有效隔離,所以無需關心底層的物理服務器到底使用聯想還是浪潮的,因為通過虛擬化技術,可以在任何的物理設備上面去創(chuàng)建一臺Windows或者Linux等各式系統的虛擬機。

最后一點也是很重要的,就是很容易云化?,F在很多云服務商(如阿里、騰訊)和省市的教育技術中心都在做教育公有云,我們可以通過這些大企業(yè)或者教育中心提供的云服務,對底層的物理資源都不用管,直接在云上去創(chuàng)建虛擬機或者遷移學?,F有虛擬機,然后去部署或者遷移我們的業(yè)務應用就可以了。

既然虛擬化技術這么有效了,為什么還要去講容器技術?首先我們要看一下虛擬化技術的局限性:

(1)每一個虛擬機都是一個完整的操作系統,要給其分配資源,當虛擬機數量增多時,操作系統本身消耗的資源勢必增多。

(2)應用環(huán)境管理復雜,維護效率不高。學校各種應用服務所需要的部署環(huán)境各異,每次安裝新的應用服務都需要重新安裝新的應用部署環(huán)境,無法將應用服務部署環(huán)境和應用打包作為一個整體進行有效的復用和管理。

(3)各項業(yè)務應用運行之后,后期的監(jiān)控和運維也非常復雜,尤其對學校來說,大多數網管教師素質一般,與開發(fā)人員也缺乏有效的溝通方式,實際的開發(fā)環(huán)境和學校的運維環(huán)境有差異,部署和后期更新都會出現矛盾。

以Docker為代表的容器技術實現輕量級的操作系統虛擬化解決方案可以對上述傳統虛擬化技術的局限性進行有效改善,使得學校用戶也可以通過容器技術克服不同平臺的差異性,享受標準化的交付維護、對應用按需分配的全套體驗。

● Docker的概念和基本使用方法

Docker是基于Go語言實現的云開源項目,是為開發(fā)人員設計的,以容器調度和資源分割為單位,通過封裝軟件運行的環(huán)境,用于構建、發(fā)布和運行應用的平臺。Docker設計之初的目的是“Build、Ship And Run Any App、Anywhere”,其理念使程序實現了“一次封裝,到處運行”。

Docker特有的容器技術與前面講的傳統的虛擬化技術不同,虛擬化技術都是基于完全虛擬化技術,即由Hypervisor層完整模擬一個“物理主機”,在生成主機上制備操作系統,在操作系統上安裝并部署相應運行庫文件、業(yè)務應用等,這種虛擬化手段的典型代表是VMware ESX、Hyper-V、Citrix、KVM等,相比較于傳統的服務器虛擬化技術,Docker更為輕量級,它直接省缺了“物理主機”的模擬,通過各實例共享宿主機操作系統的方式生產虛擬主機,而在Docker沙盒環(huán)境中是不包含操作系統內核的,所以把應用運行在Docker容器上面,可以簡化配置,將運行環(huán)境和源代碼及配置文件打包到一個容器里面,實現了本地環(huán)境、開發(fā)環(huán)境、業(yè)務環(huán)境的統一,降低了開發(fā)測試部署的難度。而且多個容器可以在同一臺機器上運行,并與其他容器共享操作系統內核,每個容器在用戶空間中作為孤立進程運行。容器占用的空間少于虛擬機(容器映像的大小通常為幾十MB),并且?guī)缀趿⒓磫印6摂M機都包含一個操作系統的完整副本,一個或多個應用程序,占用數十GB,虛擬機相對容器來說啟動緩慢得多。雙方的架構對比如下頁圖3所示。

Docker包括三個基本概念:

(1)鏡像(Image)。

Docker鏡像是一個特殊的文件系統,可以理解為一個模板,它除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數據,其內容在構建之后也不會被改變。鏡像構建時,會逐層構建,前一層是后一層的基礎。每一層構建完就不會再發(fā)生改變,后一層上的任何改變只發(fā)生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。

(2)容器(Container)。

容器就是使用鏡像來啟動常見的應用或者系統,在當前系統上安裝所需的容器即可,而不用去創(chuàng)建新的系統。鏡像(Image)和容器(Container)的關系,就像是信息技術教師熟悉的面向對象程序設計中的“類”和“實例”一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。

(3)倉庫(Repository)。

倉庫是存放鏡像的地方,包括公開倉庫和私有倉庫兩種形式。一個Docker倉庫中也可以包含多個倉庫,每個倉庫可以包含多個標簽(Tag),每個標簽對應一個鏡像。

● Docker的基本使用體驗

在對Docker有了基本了解后,可以嘗試用實際操作加深體驗,如果想在習慣的Windows上體驗Docker,可在64位Windows 10(家庭版除外)和Windows 2016上安裝DockerDesktop For Windows,由于Docker本身是Linux軟件,所以最好在Linux系統的主機或者虛擬機上直接安裝感受原生的體驗。下面以CentOS 7為例,使用Linux Shell命令搭建一個容器網站服務來說明。

(1)使用root權限登錄CentOs,Docker要求CentOs系統為64位操作系統且內核版本需要在3.10及以上,可用“uname -r”命令查看版本,使用“yum update”命令確保yum包更新到最新(如圖4)。

(2)Yum是一個在Linux中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須煩瑣地一次次下載、安裝。安裝需要的軟件包。yum-util提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的:yum install -y yum-utils device-mapper-persistent-data lvm2(如圖5)。

(3)用“yum-config-manager --add-repo”指令加上相應地址來設置Yum源(如下頁圖6)。

(4)用“yum install docker-ce”指令安裝Docker,由于repo中默認只開啟stable倉庫,故這里安裝的是最新穩(wěn)定版(如下頁圖7)。

(5)用“systemctl start docker”指令來啟動Docker。也可以用“systemctl enable docker”指令把Docker加入開機啟動就啟動(如圖8)。

(6)Docker啟動后,首先用“docker pull”指令來拉取一個名為busybox(一個集成了一百多個最常用Linux命令和工具的軟件工具箱)的鏡像文件,拉取完成后用“Docker images”命令查看下載到本地的所有鏡像(如圖9)。

(7)使用“docker run”命令將前面拉取的“busybox”鏡像文件去啟動一個容器(Container),并指定一個容器名稱為“ITEdu”。運行后會直接進入這個容器里面,可以發(fā)現該容器內環(huán)境和一個正常使用的Linux的環(huán)境完全相同,首先創(chuàng)建一個簡單的網站目錄“data/www”,并在該目錄下用tee命令寫一個簡單文本網頁(如圖10)。

(8)這個鏡像里自帶了httpd服務(Apache HTTP服務器程序,直接執(zhí)行程序可啟動WEB網站服務器),我們來啟動“httpd-h/data/www”命令,將“data/www”下的網站啟動,查看一下容器的IP地址172.17.0.2,并在宿主機用瀏覽器訪問該地址,可以看到該網站已經可以成功訪問該測試網站(如圖11)。

通過以上幾條命令,就可成功搭建一個容器內網站,感覺是不是很方便。最后,還可以實際體驗下一家校園軟件開發(fā)公司的容器操作范例(如上頁圖12):

(1)我們可以在學?;蛘咴品掌魃现苯拥皆摴驹诎⒗镌频膫}庫拉?。╬ull)一所學校數據中心范例鏡像,執(zhí)行以下命令即可實現。

docker pull registry.cn-shanghai.aliyuncs.com/xy-docker-hub-test/data-center:dev

(2)然后再執(zhí)行運行容器指令。

docker run -d --restart always --name data-center -p 9000:9000 registry.cn-shanghai.aliyuncs.com/xy-docker-hub-test/data-center:dev

命令解釋如下:“registry.cn-shanghai.aliyuncs.com/xy-docker-hub-test/data-center:dev”是該公司學校數據中心范例鏡像的一個標識,我們用該鏡像生成一個名為“data-center”的容器,“-d-restart always”表示讓該容器每次開機就后臺啟動,“-p -p 9000:9000”就是映射該服務器的9000端口到容器的9000端口。

這樣通過拉取鏡像和運行容器兩條指令,就可以將該容器網站服務直接映射數據中心宿主服務器9000端口上,通過http://服務器IP:9000/訪問該容器網站。

至此,學校的一個新的需求就完成了。開發(fā)人員僅需開發(fā)對應的代碼,然后進行發(fā)布。后續(xù)的一系列流程,全部自動化實現,大大減少了研發(fā)流程,提高了研發(fā)效率,節(jié)省了大量的人力和物力。在學校信息化不斷深入的過程中,校園各種應用服務急劇增加,學校數據中心急需一種管理維護便捷、占用資源少、運行效率高的應用服務部署和遷移解決方案,采用基于Docker容器技術的校園應用服務開源PAAS能滿足以上需求,為學校的教學和管理應用服務提供一個高可靠、低成本的高效便捷的應用方式。

猜你喜歡
應用服務鏡像虛擬化
鏡像
鏡像
一種實現國際漫游歡迎短信的方案研究
大數據服務在高考填志愿中服務的心理學意義探討
“云水謠”推廣平臺的設計與實現
微軟推出整合版Azure應用服務
鏡像
淺談虛擬化工作原理
用戶怎樣選擇虛擬化解決方案
虛擬化整合之勢凸顯