喻衣鑫 湯東
關鍵詞:Docker虛擬化容器Linux大數(shù)據(jù)
在智能時代的今天,物、云、大、智融入生活的方方面面———從產(chǎn)品營銷至信息服務,從日常生活應用至高端科學研究。物聯(lián)網(wǎng)(產(chǎn)生數(shù)據(jù))、云計算(承載數(shù)據(jù))、大數(shù)據(jù)(挖掘數(shù)據(jù))和人工智能(學習數(shù)據(jù))相輔相成、彼此依附、相互助力,合力搭檔在一起更有力量:給未來多一些可能,才能給未知多一些可能性。對于這些技術的基礎學習(包括Linux操作系統(tǒng)基礎學習、Hadoop技術學習等),都需要進行環(huán)境平臺的搭建,正所謂“工欲善其事,必先利其器”。
1現(xiàn)有Linux相關教學存在的問題
筆者在教學過程中為不同專業(yè)、不同層次的學生進行過Linux相關課程的教學,當然也在不同的環(huán)境、場合進行了課程教學,難免會遇到諸多的問題,如學生無計算機基礎、未接觸過計算機以及軟硬件滯后、不兼容等。
1.1專業(yè)及層次問題
在云計算技術應用專業(yè)中,教學側重Linux的基本應用、Shell/Python腳本的自動化運維開發(fā)以及網(wǎng)絡服務的配置管理等;在大數(shù)據(jù)技術專業(yè)中,教學側重服務的基礎應用、Python/Java在Linux上的基礎應用、正則表達式以及Hadoop環(huán)境搭建配置等,為后期部署Hadoop環(huán)境并進行技術的學習打好基礎;在計算機網(wǎng)絡技術專業(yè)中,教學側重Linux基本應用、Shell腳本、軟件安裝以及各種網(wǎng)絡服務配置與管理等。
層次較低的學生側重基礎的夯實教學,層次較高的學生側重專業(yè)引導,以期進行后續(xù)的相關專業(yè)技術應用。
1.2軟硬件問題
由于學?;蛘邆€人計算機多以Windows系統(tǒng)為主,不同的場所安裝的軟件版本可能存在差異。同時,由于維護不及時,很多軟件未能實現(xiàn)實時更新,當然還可能存在兼容性問題。
專業(yè)及層次問題、軟硬件問題都為Linux相關課程教學帶來了困難和挑戰(zhàn)。
2容器技術
Docker容器技術對傳統(tǒng)基于虛擬機的環(huán)境部署帶來了挑戰(zhàn),其誕生于2013年,自開源后就深受關注和討論,它的理念就是:“一次構建,到處運行”。在Docker中有兩個重要概念:Image(鏡像)和Container(容器),Docker可利用Image快速構建出Container,容器不需要為每個應用分配單獨的操作系統(tǒng),所以容器會擁有更高的資源使用效率[1]。以下是Docker深受歡迎的三個特性。
2.1輕便性
Docker可以安裝在Windows/Linux環(huán)境下,并能虛擬出比VMware/VirtualBox虛擬機更輕的容器。容器中也可以安裝Linux系統(tǒng),主機運行容器的速度很快,在硬件資源較好的情況下運行,完全無法感知其是虛擬出的系統(tǒng)。
2.2靈活性
針對不同的專業(yè)通過定制Image(鏡像)即可解決相關問題,并能通過啟動定制的Image完成相應的專業(yè)課程教學任務。
比如在Hadoop技術的學習中,首先需要進行Java的安裝,因為很多組件都是基于Java開發(fā)的。此時可以利用Docker基于基礎Image創(chuàng)建容器來進行Java的安裝,Image在被修改定制后保存成新的Image,這樣就能極大的簡化相關課程環(huán)境的部署。
2.3快速部署
利用傳統(tǒng)虛擬機的形式進行實驗,需要將環(huán)境搭建到虛擬機鏡像中,并通過克隆/復制等方式進行移植。此方式雖然可以免去重復的搭建動作,但由于虛擬機是將整個系統(tǒng)運行在虛擬的硬件平臺上,所以開啟虛擬機的時間會隨著部署虛擬機數(shù)量的增加而延長。
比如在Hadoop集群和ZooKeeper集群的部署中,只需要定制好Image。由于Docker啟動時間以秒為單位,且一臺計算機機能同時運行幾十個容器,所以Docker在時間上的優(yōu)勢就凸顯無疑。當出現(xiàn)錯誤時,重新部署相應鏡像即可解決。當然Docker還有其他的特性以及劣勢,此處不過多闡述。
3以云計算技術應用專業(yè)課程為側重點進行Docker鏡像定制
云計算技術應用專業(yè)的側重點就是服務基礎應用,接下來以Web服務器為例進行Docker的使用闡述。
3.1搜索下載apache基礎系統(tǒng)鏡像
3.2新建并啟動容器,映射本地IP的80端口到容器的80端口
[root@localhost~]#ipaddr|grep"192"∥本地主機IP
inet192.168.222.206/24brd192.168.222.255scopeglobaldynamicens33
[root@localhost~]#dockerrun?it?p80:80httpd/bin/bash
root@5f5d1a5eb346:/usr/local/apache2#bin/httpd∥啟動容器里httpd服務
3.3打開Web進行訪問驗證
通過訪問本機的80端口訪問容器里面所啟動的Web服務,如圖1所示。
3.4定制httpd的Docker鏡像
為讓Docker容器在后臺運行,同時使容器里的Web服務正常運行,且監(jiān)聽80端口,可以通過Dockerfile創(chuàng)建鏡像[2]。
3.5再次打開Web進行訪問
在定制鏡像的時候,CMD["/usr/local/apache2/bin/httpd","?D","FOREGROUND"]是讓啟動Docker容器的時候執(zhí)行/usr/local/apache2/bin/httpd–DFOREGROUND命令,同時通過?d參數(shù)讓容器后臺運行,并映射本機88端口到容器80端口,訪問結果如圖2所示。
4以大數(shù)據(jù)技術專業(yè)Hadoop課程為側重點進行舉例
大數(shù)據(jù)技術專業(yè)的側重點就是Hadoop環(huán)境搭建配置,接下來以Docker容器通過獨立IP暴露給局域網(wǎng)的方法進行舉例。
現(xiàn)有局域網(wǎng)IP網(wǎng)段為:192.168.1.0/24;安裝有Docker的Linux環(huán)境:Linux的IP為192.168.1.250,docker的網(wǎng)橋網(wǎng)關為172.17.0.1/24。想實現(xiàn)快速構建N3個Hadoop系統(tǒng)(1主,2備)可供N個學生進行Hadoop環(huán)境搭建練習。
定制與Hadoop相關的Docker鏡像———安裝Java、SSH以及放入Hadoop相關文件,并進行定制操作;配置宿主機Linux系統(tǒng)的防火墻和SELinux,或者暫時關閉它們;編寫Shell/Python腳本,實現(xiàn)批量創(chuàng)建多個以學生學號ID編號的多個容器。后續(xù),學生按照編號規(guī)則通過SSH遠程登錄進行Hadoop環(huán)境的搭建練習。
最后,在局域網(wǎng)中的Windows宿主機的CMD中增加如下命令:route ADD 172.17.0.0 MASK 255.255.0.0 192.168.1.250。通過以上配置操作,可以實現(xiàn)批量、快速構建N3個Hadoop系統(tǒng),讓學生更快掌握后續(xù)相關的技術點,而非每次都從頭再來,既能保證一次性成功,又節(jié)約了學習新知識的時間。
5結語
計算機技術更新?lián)Q代越來越快、分支越來越多,為了讓學生在學校學習的知識不太過于滯后,利用Docker技術的好處毋庸置疑[3]。不管是對Linux基礎/服務器環(huán)境的搭建,還是對大數(shù)據(jù)Hadoop環(huán)境的部署,都較為方便、快捷。