Docker技术在高校教学平台建设的应用

时间:2022-08-10 03:36:14

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.

作者:叶惠仙 游金水 单位:福建农业职业技术学院 福建省职业技术教育中心