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