盧春光,秦惜夢
(河南職業(yè)技術(shù)學院 現(xiàn)代信息技術(shù)學院,河南 鄭州 450000)
隨著信息技術(shù)的快速發(fā)展,各種新技術(shù)層出不窮,容器作為云計算中的熱門技術(shù)在不同行業(yè)方向發(fā)揮著積極的影響。目前,各行業(yè)缺少掌握容器技術(shù)的專業(yè)技術(shù)人才,Docker是現(xiàn)今比較主流的容器平臺,許多高職院校相繼開始Docker容器技術(shù)相關(guān)課程,加大對專業(yè)技術(shù)人才的培養(yǎng)。當前的Docker容器技術(shù)教學存在內(nèi)容枯燥等現(xiàn)象,本文提出的以“Python應用程序容器化”進行案例式教學的方法,可以使學生更加容易掌握Docker技術(shù),對于提高課堂教學質(zhì)量具有較好的效果。
在不同高職院校,Docker容器技術(shù)相關(guān)課程設(shè)置方式有所區(qū)別,有些高職院校在計算機相關(guān)專業(yè)單獨開設(shè)容器技術(shù)課程,有些則是融入云計算技術(shù)課程中。目前,對容器技術(shù)的研究主要是Docker在其他系統(tǒng)或者課程中的應用。周橋[1]提出將OBE理念融入Docker容器技術(shù)課程,進行混合式實踐教學分析和研究。李艷紅[2]提出將Docker技術(shù)融入搭建研發(fā)環(huán)境或者部署環(huán)境,對網(wǎng)絡(luò)課程教學進行了一定的分析和研究。謝睿等[3]提出基于Docker技術(shù),從服務模塊、鏡像管理模塊、資源調(diào)度模塊、集群管理模塊和Web管理服務模塊對高校中空閑的PC資源和網(wǎng)絡(luò)資源建立PaaS平臺進行了分析和設(shè)計。徐峰等[4]分析了容器技術(shù)的原理,對Docker技術(shù)在舊服務器上部署帶桌面的Linux操作系統(tǒng)進行了研究。鮑洪生[5]對Docker部署靶機和CTF平臺在網(wǎng)絡(luò)安全教學中的使用進行了分析和研究。朱來雪[6]分析了Docker技術(shù)的使用,研究了將多個服務部署到單臺服務器,提高了服務器的使用效率。王湘渝等[7]基于Docker對Linux實驗平臺進行了部署,分析了Docker容器的特點和應用場景。多數(shù)課程教學過程中理論內(nèi)容較多,而高職院校學生大多學習能力較差,對理論知識缺乏興趣,不知道如何將知識點應用于實踐。本文以“Python應用程序容器化”為例,將各個知識點融入案例,對Docker容器技術(shù)課程進行案例式教學,使學生從實踐中學習,提高了學生的學習興趣,提升了課程的教學效果。
Docker容器技術(shù)是一種輕量的虛擬化,可以隔離不同的進程和資源,在系統(tǒng)開發(fā)、軟件測試以及實際生產(chǎn)中具有廣泛的應用。Docker版本有企業(yè)版(Docker EE)和社區(qū)版(Docker CE),企業(yè)版具有更豐富的功能,需要額外收費;社區(qū)版可以免費使用,功能雖然較少,但能夠滿足日常的教學和學習使用。
Docker容器可以部署在不同的操作平臺。Windows平臺,可以通過下載DockerToolbox的exe安裝包直接安裝;Linux平臺,可以在線或離線安裝,在線安裝需要對Linux系統(tǒng)進行一些環(huán)境設(shè)置,例如防火墻、Selinux等服務要關(guān)閉,設(shè)置國內(nèi)穩(wěn)定的鏡像倉庫源等,使用“yum install-y docker-ce”即可完成最新版的Docker安裝。使用“docker version”命令可以查看安裝的Docker版本,通過“docker run hello-world”命令運行hello-world鏡像來驗證Docker CE是否能夠正常使用。
Docker課程的知識點比較零碎,多數(shù)在教學中忽視了學生學習課程的目標是對知識的具體應用,尤其是高職院校的學生,如果沒有案例應用,幾乎很難對知識達到掌握。筆者主要教授計算機網(wǎng)絡(luò)專業(yè)的學生,對于Linux操作系統(tǒng)的使用比較熟練,因此在教學過程中對該部分內(nèi)容進行精簡化講授,重點講解Docker的實際應用。Python作為當前非常流行的編程語言,在大數(shù)據(jù)、人工智能等方向應用廣泛,學校計算機大類的專業(yè)幾乎都開設(shè)了Python相關(guān)課程,以“Python應用程序容器化”為案例進行課程教學,可以使大部分學生更容易接受。
Flask是一個輕量級的Web框架,可用于Python Web開發(fā),通過Docker技術(shù)可以快速部署Flask應用。Flask應用的部署需要編寫的Python文件非常簡單,對于高職院校的學生,比較容易上手,排錯也比較簡單。在系統(tǒng)的Root目錄下,通過“mkdir python-flask”命令創(chuàng)建名為“python-flask”的Python項目,通過“touch flask_test.py”命令創(chuàng)建Python應用文件“flask_test.py”,編輯代碼如下所示。

Docker構(gòu)建鏡像的方式有兩種,基于容器生成鏡像和基于Dockerfile生成鏡像。Dockerfile文件由不同的指令和參數(shù)構(gòu)成,每一條指令構(gòu)建鏡像的一層,文件中的內(nèi)容描述了構(gòu)建鏡像需要的所有操作。Docker可以通過創(chuàng)建好的Dockerfile文件方便快速地構(gòu)建Docker鏡像,當需要添加、刪除或者修改鏡像時,直接在Dockerfile文件中進行即可快速重新生成鏡像。在項目目錄“python-flask”下通過“touch Dockerfile”命令創(chuàng)建Dockerfile文件,編輯內(nèi)容如下所示。


為了方便部署,需要在項目目錄“python-flask”下,通過“touch requirements.txt”命令創(chuàng)建一個名為“requirements.txt”的文件,將Dockerfile文件中需要安裝的依賴包及其版本寫入文件。這里僅需要安裝Flask,在“requirements.txt”文件中直接寫入Flask。
編輯完成Dockerfile文件,在項目目錄“pythonflask”下,通過命令“docker build-t flask_web:1.0.”構(gòu)建名為“flask_web”標簽為1.0的鏡像。Docker將會按照Dockerfile文件中每一層的內(nèi)容,執(zhí)行基礎(chǔ)鏡像的拉取、依賴包的安裝、相關(guān)環(huán)境的配置和啟動命令參數(shù)的配置等操作。可以通過“docker images”命令查看當前所有的鏡像,或者通過“docker images flask_web:1.0”命令直接查看上述構(gòu)建的鏡像。通過命令“docker run--name flask-web-p 5000∶5000 flask_web:1.0”即可使用上述構(gòu)建的鏡像,啟動名為“flask-web”容器。
打開瀏覽器,輸入“http://192.168.200.191∶5000/”即可查看部署好的應用,Python應用部署如圖1所示。

圖1 Python應用部署
通過“docker run”命令可以方便地啟動單個容器,部署單個應用程序,對于多個容器和多個應用程序的部署,可以使用Docker Compose進行自動構(gòu)建和編排。在項目目錄“python-flask”下創(chuàng)建一個Docker Compose文件“docker-compose.yml”,編輯內(nèi)容如下所示。

通過“docker-compose up”命令,可以啟動應用程序。在“docker-compose.yml”文件中定義了一個服務Flask_web,使用Dockerfile文件構(gòu)建的鏡像啟動服務,同時設(shè)置了Volumes卷將項目目錄掛載到了容器中的“/code”目錄,可以使用戶在不需要停止服務的狀態(tài)下修改“flask_test.py”程序代碼,并且立即生效。修改內(nèi)容如下。


修改完成后,對瀏覽器執(zhí)行刷新操作,即可看到效果,如圖2所示。

圖2 修改后的應用部署
通過對Python應用的部署實例,學生可以對Docker鏡像的構(gòu)建方法、Dockerfile文件的編寫、Docker容器的運行以及Docker容器的編排有了一個循序漸進的認識,通過Docker Compose使學生更清晰地認識到容器技術(shù)的優(yōu)勢,加深對Docker容器技術(shù)在項目開發(fā)中應用的理解。案例的學習,使學生能夠?qū)W以致用,能夠增加學習的成就感,增強進一步學習的熱情和興趣。
本文分析了高職院校Docker容器課程的教學現(xiàn)狀,提出通過將“Python應用程序容器化”案例融入課程教學的方法,由淺入深地介紹了Docker學習過程中的鏡像構(gòu)建、容器運行、Dockerfile和Docker Compose等重要知識點,使學生通過簡單項目的部署,激發(fā)學習興趣,增強課堂的教學效果。