Docker技術在高校教學平臺建設的應用

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

導語:Docker技術在高校教學平臺建設的應用一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

Docker技術在高校教學平臺建設的應用

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

關鍵詞:Docker容器;信息平臺;部署

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

1為什么使用docker

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

1.1傳統虛擬化技術和容器虛擬化技術

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

1.2Docer核心技術——鏡像技術

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

2Docker技術在教學平臺中的應用

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

3教學平臺建設

教學平臺主要功能模塊有課程與教學管理模塊、預約與實驗管理模塊、虛擬化資源管理模塊、平臺系統管理模塊。其中課程與教學管理模塊主要功能包括課程分配、實驗報告管理、實驗管理、學情管理、課程管理、教學統計分析等。預約與實驗室管理主要包括實驗管理、上課預約管理、實驗室管理、個人預約管理、實驗室開放管理、自習開放管理等。虛擬化資源管理主要包括實驗模板管理、虛擬機實驗管理、資源監控管理、多機環境管理、資源分區管理、計算方案管理。平臺系統管理主要包括基礎數據管理、授權管理、用戶角色管理、周次課節管理、組織架構管理、學年學期管理[6]。基于教學平臺設計開發代碼為java,需構建jdk鏡像,先從官網下載jdk,創建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.構建jdk鏡像。

3.1平臺功能實現

平臺系統用戶有管理員、教師、學生三種角色。管理員角色主要對云資源進行管理;教師角對課程管理;學生角色主要對學生操作實驗管理。各角色協同操作,完成實驗課程,學上機實訓等功能。據平臺功能將各個寫好的代碼打包成jar包,基于jdk鏡像構建用戶(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用戶通過網絡,使用各種PC瀏覽器或移動終端設備進入實驗教學平臺,通過統一身份認證、訪問控制等安全策略控制后,為管理員、老師、學生提供完善的實驗教學管理功能。

3.2平臺更新

當平臺服務的配置發生更改時,可使用docker-composeup命令更新配置,此時,Compose會刪除舊容器并創建新容器,新容器會以不同的IP地址加入網絡,名稱保持不變,任何指向舊容起的連接都會被關閉,重新找到新容器并連接上去。服務之間可以使用服務名稱相互訪問,links允許定義一個別名,從而使用該別名訪問其它服務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集群啟動。基于以上的方法,可將教學平臺其他功能模塊創建集成多個組件組成的鏡像進行服務部署,實現高校教學平臺建設。

4結束語

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

參考文獻:

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

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

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

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

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

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

作者:葉惠仙 游金水 單位:福建農業職業技術學院 福建省職業技術教育中心