盧春光,秦惜夢(mèng)
(河南職業(yè)技術(shù)學(xué)院 現(xiàn)代信息技術(shù)學(xué)院,河南 鄭州 450000)
隨著信息技術(shù)的快速發(fā)展,各種新技術(shù)層出不窮,容器作為云計(jì)算中的熱門技術(shù)在不同行業(yè)方向發(fā)揮著積極的影響。目前,各行業(yè)缺少掌握容器技術(shù)的專業(yè)技術(shù)人才,Docker是現(xiàn)今比較主流的容器平臺(tái),許多高職院校相繼開始Docker容器技術(shù)相關(guān)課程,加大對(duì)專業(yè)技術(shù)人才的培養(yǎng)。當(dāng)前的Docker容器技術(shù)教學(xué)存在內(nèi)容枯燥等現(xiàn)象,本文提出的以“Python應(yīng)用程序容器化”進(jìn)行案例式教學(xué)的方法,可以使學(xué)生更加容易掌握Docker技術(shù),對(duì)于提高課堂教學(xué)質(zhì)量具有較好的效果。
在不同高職院校,Docker容器技術(shù)相關(guān)課程設(shè)置方式有所區(qū)別,有些高職院校在計(jì)算機(jī)相關(guān)專業(yè)單獨(dú)開設(shè)容器技術(shù)課程,有些則是融入云計(jì)算技術(shù)課程中。目前,對(duì)容器技術(shù)的研究主要是Docker在其他系統(tǒng)或者課程中的應(yīng)用。周橋[1]提出將OBE理念融入Docker容器技術(shù)課程,進(jìn)行混合式實(shí)踐教學(xué)分析和研究。李艷紅[2]提出將Docker技術(shù)融入搭建研發(fā)環(huán)境或者部署環(huán)境,對(duì)網(wǎng)絡(luò)課程教學(xué)進(jìn)行了一定的分析和研究。謝睿等[3]提出基于Docker技術(shù),從服務(wù)模塊、鏡像管理模塊、資源調(diào)度模塊、集群管理模塊和Web管理服務(wù)模塊對(duì)高校中空閑的PC資源和網(wǎng)絡(luò)資源建立PaaS平臺(tái)進(jìn)行了分析和設(shè)計(jì)。徐峰等[4]分析了容器技術(shù)的原理,對(duì)Docker技術(shù)在舊服務(wù)器上部署帶桌面的Linux操作系統(tǒng)進(jìn)行了研究。鮑洪生[5]對(duì)Docker部署靶機(jī)和CTF平臺(tái)在網(wǎng)絡(luò)安全教學(xué)中的使用進(jìn)行了分析和研究。朱來(lái)雪[6]分析了Docker技術(shù)的使用,研究了將多個(gè)服務(wù)部署到單臺(tái)服務(wù)器,提高了服務(wù)器的使用效率。王湘渝等[7]基于Docker對(duì)Linux實(shí)驗(yàn)平臺(tái)進(jìn)行了部署,分析了Docker容器的特點(diǎn)和應(yīng)用場(chǎng)景。多數(shù)課程教學(xué)過(guò)程中理論內(nèi)容較多,而高職院校學(xué)生大多學(xué)習(xí)能力較差,對(duì)理論知識(shí)缺乏興趣,不知道如何將知識(shí)點(diǎn)應(yīng)用于實(shí)踐。本文以“Python應(yīng)用程序容器化”為例,將各個(gè)知識(shí)點(diǎn)融入案例,對(duì)Docker容器技術(shù)課程進(jìn)行案例式教學(xué),使學(xué)生從實(shí)踐中學(xué)習(xí),提高了學(xué)生的學(xué)習(xí)興趣,提升了課程的教學(xué)效果。
Docker容器技術(shù)是一種輕量的虛擬化,可以隔離不同的進(jìn)程和資源,在系統(tǒng)開發(fā)、軟件測(cè)試以及實(shí)際生產(chǎn)中具有廣泛的應(yīng)用。Docker版本有企業(yè)版(Docker EE)和社區(qū)版(Docker CE),企業(yè)版具有更豐富的功能,需要額外收費(fèi);社區(qū)版可以免費(fèi)使用,功能雖然較少,但能夠滿足日常的教學(xué)和學(xué)習(xí)使用。
Docker容器可以部署在不同的操作平臺(tái)。Windows平臺(tái),可以通過(guò)下載DockerToolbox的exe安裝包直接安裝;Linux平臺(tái),可以在線或離線安裝,在線安裝需要對(duì)Linux系統(tǒng)進(jìn)行一些環(huán)境設(shè)置,例如防火墻、Selinux等服務(wù)要關(guān)閉,設(shè)置國(guó)內(nèi)穩(wěn)定的鏡像倉(cāng)庫(kù)源等,使用“yum install-y docker-ce”即可完成最新版的Docker安裝。使用“docker version”命令可以查看安裝的Docker版本,通過(guò)“docker run hello-world”命令運(yùn)行hello-world鏡像來(lái)驗(yàn)證Docker CE是否能夠正常使用。
Docker課程的知識(shí)點(diǎn)比較零碎,多數(shù)在教學(xué)中忽視了學(xué)生學(xué)習(xí)課程的目標(biāo)是對(duì)知識(shí)的具體應(yīng)用,尤其是高職院校的學(xué)生,如果沒(méi)有案例應(yīng)用,幾乎很難對(duì)知識(shí)達(dá)到掌握。筆者主要教授計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)的學(xué)生,對(duì)于Linux操作系統(tǒng)的使用比較熟練,因此在教學(xué)過(guò)程中對(duì)該部分內(nèi)容進(jìn)行精簡(jiǎn)化講授,重點(diǎn)講解Docker的實(shí)際應(yīng)用。Python作為當(dāng)前非常流行的編程語(yǔ)言,在大數(shù)據(jù)、人工智能等方向應(yīng)用廣泛,學(xué)校計(jì)算機(jī)大類的專業(yè)幾乎都開設(shè)了Python相關(guān)課程,以“Python應(yīng)用程序容器化”為案例進(jìn)行課程教學(xué),可以使大部分學(xué)生更容易接受。
Flask是一個(gè)輕量級(jí)的Web框架,可用于Python Web開發(fā),通過(guò)Docker技術(shù)可以快速部署Flask應(yīng)用。Flask應(yīng)用的部署需要編寫的Python文件非常簡(jiǎn)單,對(duì)于高職院校的學(xué)生,比較容易上手,排錯(cuò)也比較簡(jiǎn)單。在系統(tǒng)的Root目錄下,通過(guò)“mkdir python-flask”命令創(chuàng)建名為“python-flask”的Python項(xiàng)目,通過(guò)“touch flask_test.py”命令創(chuàng)建Python應(yīng)用文件“flask_test.py”,編輯代碼如下所示。
Docker構(gòu)建鏡像的方式有兩種,基于容器生成鏡像和基于Dockerfile生成鏡像。Dockerfile文件由不同的指令和參數(shù)構(gòu)成,每一條指令構(gòu)建鏡像的一層,文件中的內(nèi)容描述了構(gòu)建鏡像需要的所有操作。Docker可以通過(guò)創(chuàng)建好的Dockerfile文件方便快速地構(gòu)建Docker鏡像,當(dāng)需要添加、刪除或者修改鏡像時(shí),直接在Dockerfile文件中進(jìn)行即可快速重新生成鏡像。在項(xiàng)目目錄“python-flask”下通過(guò)“touch Dockerfile”命令創(chuàng)建Dockerfile文件,編輯內(nèi)容如下所示。
為了方便部署,需要在項(xiàng)目目錄“python-flask”下,通過(guò)“touch requirements.txt”命令創(chuàng)建一個(gè)名為“requirements.txt”的文件,將Dockerfile文件中需要安裝的依賴包及其版本寫入文件。這里僅需要安裝Flask,在“requirements.txt”文件中直接寫入Flask。
編輯完成Dockerfile文件,在項(xiàng)目目錄“pythonflask”下,通過(guò)命令“docker build-t flask_web:1.0.”構(gòu)建名為“flask_web”標(biāo)簽為1.0的鏡像。Docker將會(huì)按照Dockerfile文件中每一層的內(nèi)容,執(zhí)行基礎(chǔ)鏡像的拉取、依賴包的安裝、相關(guān)環(huán)境的配置和啟動(dòng)命令參數(shù)的配置等操作??梢酝ㄟ^(guò)“docker images”命令查看當(dāng)前所有的鏡像,或者通過(guò)“docker images flask_web:1.0”命令直接查看上述構(gòu)建的鏡像。通過(guò)命令“docker run--name flask-web-p 5000∶5000 flask_web:1.0”即可使用上述構(gòu)建的鏡像,啟動(dòng)名為“flask-web”容器。
打開瀏覽器,輸入“http://192.168.200.191∶5000/”即可查看部署好的應(yīng)用,Python應(yīng)用部署如圖1所示。
圖1 Python應(yīng)用部署
通過(guò)“docker run”命令可以方便地啟動(dòng)單個(gè)容器,部署單個(gè)應(yīng)用程序,對(duì)于多個(gè)容器和多個(gè)應(yīng)用程序的部署,可以使用Docker Compose進(jìn)行自動(dòng)構(gòu)建和編排。在項(xiàng)目目錄“python-flask”下創(chuàng)建一個(gè)Docker Compose文件“docker-compose.yml”,編輯內(nèi)容如下所示。
通過(guò)“docker-compose up”命令,可以啟動(dòng)應(yīng)用程序。在“docker-compose.yml”文件中定義了一個(gè)服務(wù)Flask_web,使用Dockerfile文件構(gòu)建的鏡像啟動(dòng)服務(wù),同時(shí)設(shè)置了Volumes卷將項(xiàng)目目錄掛載到了容器中的“/code”目錄,可以使用戶在不需要停止服務(wù)的狀態(tài)下修改“flask_test.py”程序代碼,并且立即生效。修改內(nèi)容如下。
修改完成后,對(duì)瀏覽器執(zhí)行刷新操作,即可看到效果,如圖2所示。
圖2 修改后的應(yīng)用部署
通過(guò)對(duì)Python應(yīng)用的部署實(shí)例,學(xué)生可以對(duì)Docker鏡像的構(gòu)建方法、Dockerfile文件的編寫、Docker容器的運(yùn)行以及Docker容器的編排有了一個(gè)循序漸進(jìn)的認(rèn)識(shí),通過(guò)Docker Compose使學(xué)生更清晰地認(rèn)識(shí)到容器技術(shù)的優(yōu)勢(shì),加深對(duì)Docker容器技術(shù)在項(xiàng)目開發(fā)中應(yīng)用的理解。案例的學(xué)習(xí),使學(xué)生能夠?qū)W以致用,能夠增加學(xué)習(xí)的成就感,增強(qiáng)進(jìn)一步學(xué)習(xí)的熱情和興趣。
本文分析了高職院校Docker容器課程的教學(xué)現(xiàn)狀,提出通過(guò)將“Python應(yīng)用程序容器化”案例融入課程教學(xué)的方法,由淺入深地介紹了Docker學(xué)習(xí)過(guò)程中的鏡像構(gòu)建、容器運(yùn)行、Dockerfile和Docker Compose等重要知識(shí)點(diǎn),使學(xué)生通過(guò)簡(jiǎn)單項(xiàng)目的部署,激發(fā)學(xué)習(xí)興趣,增強(qiáng)課堂的教學(xué)效果。