Docker技術(shù)在高校教學(xué)平臺建設(shè)的應(yīng)用

時間:2022-08-10 03:36:14

導(dǎo)語:Docker技術(shù)在高校教學(xué)平臺建設(shè)的應(yīng)用一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Docker技術(shù)在高校教學(xué)平臺建設(shè)的應(yīng)用

摘要:高校信息化建設(shè)是多方面的,設(shè)計基于docker容器技術(shù)搭建高校教學(xué)平臺,開發(fā)人員將完成的平臺功能代碼打成jar包,使用Dockerfile構(gòu)建鏡像,操作和維護人員都不必在集群中的每臺服務(wù)器上安裝環(huán)境,而是直接使用提供的鏡像進行部署,為高校教學(xué)平臺建設(shè)提供可行的解決方案。

關(guān)鍵詞:Docker容器;信息平臺;部署

一款產(chǎn)品從開發(fā)到上線,操作系統(tǒng)、運行環(huán)境、應(yīng)用配置的兼容性都需要考慮,往往會出現(xiàn)開發(fā)人員將代碼交付運維人員進行部署時,運維人員沒辦法正確部署的問題,如果代碼沒有改動,這種問題一般就由環(huán)境和配置引起,開發(fā)人員在Windows環(huán)境下開發(fā),運維人員在Linux環(huán)境下部署,免不了出現(xiàn)一些環(huán)境和配置文件上的不兼容。特別是各種版本的迭代之后,不同版本環(huán)境的兼容,對運維人員都是考驗。另外,現(xiàn)在的服務(wù)器都不再是單臺部署,基本上都是集群,運維人員在部署應(yīng)用程序時在每臺服務(wù)器上都要安裝一遍環(huán)境,工作量很大。

1為什么使用docker

開發(fā)人員不再只是交付自己的代碼或代碼封包,而是將運行環(huán)境(配置、系統(tǒng)、數(shù)據(jù)等)也一起封裝交付給運維人員。這樣一來,運維人員也不用在集群中的每臺服務(wù)器上都安裝一遍環(huán)境,而是直接使用封裝好的軟件部署。Docker的主要目標(biāo)是“在任何地方構(gòu)建,交付和運行任何應(yīng)用程序”,即通過對應(yīng)用程序組件的生命周期進行管理,例如打包,分發(fā),部署和操作,以便用戶的APP(可以是WEB應(yīng)用程序或數(shù)據(jù)庫應(yīng)用程序等)及其操作環(huán)境可以實現(xiàn)“可在任何地方運行的程序包”[1]。Linux容器技術(shù)已經(jīng)實現(xiàn)了上述目標(biāo),Docker是在容器技術(shù)的基礎(chǔ)上開發(fā)并運行應(yīng)用程序,并且在任何操作系統(tǒng)上都將保持一致,從而實現(xiàn)了跨平臺、跨服務(wù)器,只需配置一次環(huán)境,然后切換到其他環(huán)境即可一鍵成功部署。Docker是開發(fā)、運行和維護(DevOps/開發(fā),自運行和維護)的方法,即開發(fā)人員自己負(fù)責(zé)運行和維護工作。方便做持續(xù)集成并有助于整體的容器虛擬化技術(shù),可以實現(xiàn)“一次構(gòu)建,隨處運行”。使用Docker開發(fā)與自運維的好處是:更快的部署和交付,更短的升級和擴容縮,更容易運維與高效的計算機資源利用[2]。

1.1傳統(tǒng)虛擬化技術(shù)和容器虛擬化技術(shù)

傳統(tǒng)虛擬化是一種環(huán)境安裝解決方案。它可以在一個操作系統(tǒng)中運行另一個操作系統(tǒng),例如Windows系統(tǒng)中的Linux系統(tǒng),虛擬機中提供的應(yīng)用程序無法感知虛擬環(huán)境,因為虛擬機與真實系統(tǒng)完全相同。但是,對于底層系統(tǒng),虛擬機只是一個普通文件,可以在不需要時直接將其刪除。傳統(tǒng)虛擬化也有明顯的缺點:首先,虛擬化啟動時間太長(分鐘級別),用戶必須等待很長時間;其次,虛擬化會虛擬化基礎(chǔ)硬件,因此會消耗更多資源。傳統(tǒng)的虛擬化技術(shù)是虛擬化一組硬件,然后在其上運行完整的操作系統(tǒng),最后在該操作系統(tǒng)上運行所需的應(yīng)用程序進程。容器虛擬化技術(shù)應(yīng)用進程直接在主機的內(nèi)核上運行[3]。該容器沒有自己的內(nèi)核,也沒有硬件虛擬化。因此,容器比傳統(tǒng)的虛擬化輕,Linux容器不模擬完整的操作系統(tǒng),而是隔離進程。容器允許將軟件操作所需的所有資源打包到一個隔離的容器中。與虛擬化不同,容器不需要與完整的操作系統(tǒng)捆綁在一起,僅需要軟件工作所需的庫資源和設(shè)置即可。這使系統(tǒng)更高效輕便,并確??梢砸恢碌貓?zhí)行每個環(huán)境中提供的資源。每個容器彼此隔離,并且每個容器都有自己的文件系統(tǒng)。容器不會相互影響,可以區(qū)分計算資源。由于容器虛擬化技術(shù)不再虛擬化基礎(chǔ)硬件,因此容器的啟動時間很短(秒級),并且需要的資源也更少。

1.2Docer核心技術(shù)——鏡像技術(shù)

代碼或代碼編譯后生成的可執(zhí)行文件都不能視為“應(yīng)用程序”,因為它們可能無法在不同的平臺上運行,Docker提出了一個概念:鏡像文件就是應(yīng)用程序即是Docker的核心。鏡像技術(shù)打破了“代碼即應(yīng)用”的傳統(tǒng)概念。鏡像始于系統(tǒng)環(huán)境,從下至上打包應(yīng)用程序,然后將應(yīng)用程序和環(huán)境打包到一個鏡像中。鏡像(Image)是容器的模板,并且具有寫保護。鏡像可用于創(chuàng)建Docker容器,容器(Container)是鏡像操作的一個實例。Docker使用容器獨立運行一個或多個應(yīng)用程序??梢詥?,停止和刪除容器。每個容器彼此隔離。容器的頂層是可讀寫的,而鏡像是只讀的。倉庫(Repository)是集中存儲鏡像文件的地方,倉庫分為兩種形式:公共倉庫(public)和私人倉庫(private),倉庫注冊服務(wù)器通常存儲多個倉庫,每個倉庫包含多個鏡像,并且每個鏡像都有不同的名稱[4]。

2Docker技術(shù)在教學(xué)平臺中的應(yīng)用

容器云管理,是對實驗室所有服務(wù)器資源,結(jié)合Docker容器技術(shù),進行云化處理,使得服務(wù)器資源(服務(wù)器中的軟件、系統(tǒng)、CPU、內(nèi)存、存儲、網(wǎng)絡(luò)等)成為可管理及維護的云計算服務(wù)中心。提供計算、存儲、網(wǎng)絡(luò)、安全等方面的功能和應(yīng)用,一方面實現(xiàn)更加精細(xì)化的資源管理,控制成本,提供資源利用率,另一方面基于Docker容器技術(shù),極大加快實訓(xùn)平臺搭建、啟動速度,提高平臺穩(wěn)定性及彈性伸縮能力[5]。以安全、簡單、智能為設(shè)計理念,帶來穩(wěn)定、高效、高性能、快速的教學(xué)平臺基礎(chǔ)設(shè)施建設(shè)和云解決方案。Docker資源管理平臺如圖1所示。

3教學(xué)平臺建設(shè)

教學(xué)平臺主要功能模塊有課程與教學(xué)管理模塊、預(yù)約與實驗管理模塊、虛擬化資源管理模塊、平臺系統(tǒng)管理模塊。其中課程與教學(xué)管理模塊主要功能包括課程分配、實驗報告管理、實驗管理、學(xué)情管理、課程管理、教學(xué)統(tǒng)計分析等。預(yù)約與實驗室管理主要包括實驗管理、上課預(yù)約管理、實驗室管理、個人預(yù)約管理、實驗室開放管理、自習(xí)開放管理等。虛擬化資源管理主要包括實驗?zāi)0骞芾?、虛擬機實驗管理、資源監(jiān)控管理、多機環(huán)境管理、資源分區(qū)管理、計算方案管理。平臺系統(tǒng)管理主要包括基礎(chǔ)數(shù)據(jù)管理、授權(quán)管理、用戶角色管理、周次課節(jié)管理、組織架構(gòu)管理、學(xué)年學(xué)期管理[6]?;诮虒W(xué)平臺設(shè)計開發(fā)代碼為java,需構(gòu)建jdk鏡像,先從官網(wǎng)下載jdk,創(chuàng)建Dockerfile:FROMcentos7RUNmkdir/usr/local/javaADDjdk-8u141-linux-x64.tar.gz/usr/local/java/ENVJAVA_HOME/usr/local/java/jdkENVJRE_HOME${JAVA_HOME}/jreENVCLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/libENVPATH${JAVA_HOME}/bin:$PATH使用dockerbuild-tjdk:1.8.構(gòu)建jdk鏡像。

3.1平臺功能實現(xiàn)

平臺系統(tǒng)用戶有管理員、教師、學(xué)生三種角色。管理員角色主要對云資源進行管理;教師角對課程管理;學(xué)生角色主要對學(xué)生操作實驗管理。各角色協(xié)同操作,完成實驗課程,學(xué)上機實訓(xùn)等功能。據(jù)平臺功能將各個寫好的代碼打包成jar包,基于jdk鏡像構(gòu)建用戶(userblock)的鏡像Dockerfile:FROMjdk:1.8ENVhome/usr/local/appRUNmkdir-p"$home"ENVPATH$home/bin:$PATHADD*.tar$homeWORKDIR$homeEXPOSE8090ENTRYPOINT["java","-jar","teacher.jar"]運行教師容器:dockerrun--nameteacher-d-p8090:8090\-v/etc/localtime:/etc/localtime:ro\--log-optmax-size=100m--log-optmax-file=2--restart=alwaysteacher用戶通過網(wǎng)絡(luò),使用各種PC瀏覽器或移動終端設(shè)備進入實驗教學(xué)平臺,通過統(tǒng)一身份認(rèn)證、訪問控制等安全策略控制后,為管理員、老師、學(xué)生提供完善的實驗教學(xué)管理功能。

3.2平臺更新

當(dāng)平臺服務(wù)的配置發(fā)生更改時,可使用docker-composeup命令更新配置,此時,Compose會刪除舊容器并創(chuàng)建新容器,新容器會以不同的IP地址加入網(wǎng)絡(luò),名稱保持不變,任何指向舊容起的連接都會被關(guān)閉,重新找到新容器并連接上去。服務(wù)之間可以使用服務(wù)名稱相互訪問,links允許定義一個別名,從而使用該別名訪問其它服務(wù)bashversion:'2'services:web:build:.links:-"db:database"db:image:postgres。

3.3平臺管理

使用Elasticsearch、Logstash和Kibana收集平臺日志,使用docker-compose,docker-compose.ymlversion:'3'services:elasticsearch:image:docker.elastic.co/elasticsearch/elasticsearch:7.10.0container_name:elasticsearchhostname:elasticsearchenvironment:-ELASTIC_PASSWORD=test-xpack.security.enabled=testvolumes:-/user/elk/es/data:/usr/share/elasticsearch/data-/user/elk/es/plugins:/usr/share/elasticsearch/pluginsports:-9200:9200-9300:9300restart:alwayslogging:options:max-size:"200m"kibana:image:docker.elastic.co/kibana/kibana:7.10.0environment:-ELASTICSEARCH_HOSTS=elasticsearch:9200container_name:kibanavolumes:-/user/elk/kibana/config:/usr/share/kibana/configlinks:-elasticsearch:elasticsearchrestart:alwayslogging:options:max-size:"200m"ports:-"5601:5601"logstash:image:docker.elastic.co/logstash/logstash:7.10.0container_name:logstashcommand:logstash-f/etc/logstash/conf.d/logstash.confvolumes:-/user/elk/logstash/config:/etc/logstash/conf.dports:-"5044:5044"-"9600:9600"restart:alwaysenvironment:-node.name=192.168.1.100-xpack.monitoring.elasticsearch.username=test-xpack.monitoring.elasticsearch.password=testlinks:-elasticsearch:elasticsearchlogging:options:max-size:"200m"并用Docker-composeup-d集群啟動。基于以上的方法,可將教學(xué)平臺其他功能模塊創(chuàng)建集成多個組件組成的鏡像進行服務(wù)部署,實現(xiàn)高校教學(xué)平臺建設(shè)。

4結(jié)束語

教學(xué)平臺建設(shè)是信息化教學(xué)的重要組成部分,為教學(xué)提供軟件支撐。在Centos服務(wù)器中安裝Docker,將實現(xiàn)的功能打包、然后構(gòu)建成容器,實現(xiàn)了多節(jié)點集群上的部署,與傳統(tǒng)的方式,即將所有功能代碼放到Tomcat或Nginx等Web服務(wù)器相比,部署更加簡單,后期維護成本更低,更加符合高內(nèi)聚低耦合的思想。教學(xué)平臺使用鏡像進行部署,為高校教學(xué)平臺建設(shè)提供了可行的技術(shù)方案。

參考文獻:

[1]彭勇,謝劍,童遙,等.一種基于Docker的數(shù)據(jù)中心云平臺實現(xiàn)方法及系統(tǒng)[J].中興通訊技術(shù).2017(02):60-62.

[2]伍陽.基于Docker的虛擬化技術(shù)研究[J].信息技術(shù).2016(01):121-123+128.

[3]董昕,郭勇,王杰.基于DevOps能力模型的持續(xù)集成方法[J].計算機工程與設(shè)計.2018(07):1930-1937.

[4]應(yīng)毅,劉亞軍,俞琰.利用Docker容器技術(shù)構(gòu)建大數(shù)據(jù)實驗室[J].實驗室研究與探索.2018(02):264-268.

[5]李小孟.基于Docker容器技術(shù)的云實訓(xùn)平臺建設(shè)[J].電腦編程技巧與維護2020(07):105-106+115.

[6]謝超群.Docker容器技術(shù)在高校數(shù)據(jù)中心的應(yīng)用[J].貴陽學(xué)院學(xué)報(自然科學(xué)版).2015(04):27-29.

作者:葉惠仙 游金水 單位:福建農(nóng)業(yè)職業(yè)技術(shù)學(xué)院 福建省職業(yè)技術(shù)教育中心