(12)发明专利申请
(10)申请公布号 CN 109636691 A(43)申请公布日 2019.04.16
(21)申请号 2018117517.7(22)申请日 2018.12.18
(71)申请人 南京邮电大学
地址 210003 江苏省南京市鼓楼区新模范
马路66号(72)发明人 张卫丰 蒋臣威 诸葛文杜 (74)专利代理机构 南京纵横知识产权代理有限
公司 32224
代理人 董建林(51)Int.Cl.
G06Q 50/20(2012.01)G09B 9/00(2006.01)
权利要求书3页 说明书10页 附图3页
CN 109636691 A()发明名称
一种基于docker的在线实验教学平台及实现方法(57)摘要
本发明一种基于docker的在线实验教学平
管理员、教师台及实现方法,包括三种系统角色:
和学生;管理员的职能包括:docker镜像的拉取、课程、实验的新增及镜像与实验的绑定;教师的职能包括:课程实验的发布、学生实验进度的监督、截止实验及学生实验结果的评价;学生的职能包括:创建实验环境并完成实验要求和查看实验评价。本发明提供的基于docker的在线实验教学平台及实现方法,简化在服务器中配置相同实验环境带来的繁琐工作,提高教学效率,可快速上手,操作便捷,多个学生同时实验时互不干扰,提高实验体验,降低学生进行课程实验的要求,解决现阶段在线教学课程中出现的教育者与受教育者设备配置冲突、教学效率低的问题。
CN 109636691 A
权 利 要 求 书
1/3页
1.一种基于docker的在线实验教学平台,其特征在于,包括创建的三种系统角色:管理员、教师和学生;
所述管理员的职能包括:docker镜像的拉取和创建、课程、实验的新增以及镜像与实验的绑定,包括:系统资源管理模块、docker资源管理模块和课程实验资源管理模块,系统资源管理模块包括系统资源管理、用户资源管理和角色资源管理,这三个模块为系统运行所需的基础模块,用户资源管理用于管理系统的用户资源,角色资源管理与系统资源管理协同工作,docker资源管理模块包括端口管理模块、镜像管理模块和容器管理模块,端口管理模块是docker容器使用的服务器资源管理页面,镜像管理模块是用于管理远程服务器中的docker服务内现存的镜像资源,容器管理模块是提供给管理员对学生、教师进行实验时产生的数量极多的容器资源进行管理的页面,用于管理员查看和删除学生、教师实验容器,课程实验资源管理模块包括课程类型管理模块、课程管理模块和实验管理模块,课程类型管理模块提供管理员查询修改课程类型的功能,在删除课程类型时要确保该课程类型下无在用课程,课程管理模块提供实验可的新增修改,实验管理模块为管理员提供课程实验的基础信息列表和新增修改功能;
所述教师的职能包括:课程实验的发布、学生实验进度的监督、截止实验以及学生实验结果的评价,包括实验发布模块、实验监督模块、实验评价模块和成绩展示模块;
所述学生的职能包括:创建实验环境并完成实验要求和查看实验评价,学生角色包括未开始实验、进行中实验、已截止实验和选课四个模块。
2.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,用户资源为所有通过本平台申请注册的用户列表,包含用户注册时产生的所有信息,用户信息包括用户名(学生、教师名)、用户号码(学生、教师编号)、用户密码、用户角色、系统ID等基础信息;用户角色总共分为:管理员、教师、学生和超级管理员;管理员管理教师和学生用户资源列表,超级管理员管理管理员、教师和学生的用户列表;管理员用户由超级管理员分配,教师与学生账户由使用者自助申请获得,超级管理员由系统指定。
3.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,角色资源管理包含系统内部所有用户角色的列表,系统用户角色包含超级管理员、普通管理员、教师、学生四种基础角色,角色管理可以新增修改删除系统内部的角色资源,新增用户角色时需要为新增的角色资源指定对应的系统资源,即页面资源,系统会自动根据用户角色绑定的系统资源来展示相应的页面资源,角色管理不可删除四种基础角色但是可修改四种基础角色对应的系统资源页面。
4.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,系统资源管理页面包含系统内部现存的页面资源列表,这些资源可自由的分配给系统用户角色,为该角色提供对应的功能操作页面。
5.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,实验发布模块包含着管理员已经建立的、某一门课程或所有课程的、已发布或未发布或已截止的实验资源列表,每一条资源对应课程的一个实验,教师可在实验发布模块中设定起止日期来发布实验,或通过使用docker容器对某一个实验进行模拟实验,学生只能看到已经发布的实验。
6.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,学生在进
2
CN 109636691 A
权 利 要 求 书
2/3页
行实验时的实验进度会以实验进度资源表的形式展示在实验监督模块,主要包括实验进度号、实验进度名称、实验进度备注、学号、学生姓名、实验名称、最近启动时间、实验完成度、实验进度状态、进入学生实验按钮和删除按钮。
7.根据权利要求1所述的一种基于docker的在线实验教学平台,其特征在于,学生实验只有两种操作:进入实验与清除并创建实验和停止实验,学生实验步骤包括:
功能1:进入实验容器:步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id在数据库中查询用户基础信息和用户容器信息;步骤3):如果用户信息已经含有容器信息,则跳转到步骤8),若没有则继续步骤4);步骤4):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源,并基于用户基础信息构建容器名称;
步骤5):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤6):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id;步骤7):构建容器基础信息,包括容器名、容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态和容器使用者信息等,插入数据库中容器表格;
步骤8):使用DockerClient类的实体对象,启动新创建的实验容器,并更新容器表格中的容器状态;
步骤9):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤10):执行结果返回;功能2:清除并创建实验容器:步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器;
步骤5):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器数据卷信息;
步骤6):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源;
步骤7):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤8):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id;步骤9):使用DockerClient类的实体对象,启动新创建的实验容器;
3
CN 109636691 A
权 利 要 求 书
3/3页
步骤10):构建容器基础信息,包括容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态,更新数据库中容器表格;
步骤11):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤12):执行结果返回;功能3:停止实验容器:步骤 1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):执行结果返回。
8.根据权利要求1-7任一所述的一种基于docker的在线实验教学平台的实现方法,其特征在于,包括以下步骤:
管理员:步骤1):从docker官网拉取基础镜像;步骤2):制作所需的特定的镜像;步骤3):将新创建的镜像push到docker私有仓库;步骤4):将远程仓库中的镜像pull到本地服务器;步骤5):创建新的实验对象,并加入目标内容;步骤6):将拉取的镜像绑定到实验;教师:步骤7):为新建实验设定起止时间;步骤8):发布实验;步骤9):等待学生进行实验操作,并监控学生实验进度;步骤10):等待学生实验,到达截止时间;步骤11):关闭学生实验容器,并提交学生实验进度;步骤12):依据学生容器检测结果,对学生实验进行打分点评;学生:步骤13):登录,并选择此课程选课;步骤14):查看实验内容并等待实验开始;步骤15):创建实验进度;步骤16):ssh界面内进行实验操作;步骤17):强制停止实验,并退出;步骤18):等待实验截止,查看老师点评。
4
CN 109636691 A
说 明 书
一种基于docker的在线实验教学平台及实现方法
1/10页
技术领域
[0001]本发明属于教育教学领域,具体涉及一种基于docker的在线实验教学平台及实现方法。
背景技术
[0002]由于大型开放式网络课程本身教学模式的,如教师与学生的比例较低、没有统一的课程实验平台等,使得教学双方在答疑讨论、作业批改、课程实验等方面还面临很多困难,特别是在一些需要学生动手实践的环节,如计算机编程语言、操作系统、分布式大数据处理等课程中,学生使用各自的计算机作为实验环境,既没有相同的软件与硬件配置,又不能满足分布式课程实验的硬件要求,学生使用自己的操作系统而无法达到统一教学环境,很多时候使得教学双方将大量精力花费在实验环境的部署与配置上,反而不能够专注于课程实验关注的内容,导致平台发布的实验往往不能很好地由学生完成。发明内容
[0003]为解决现有技术存在的问题,本发明提供了一种基于docker的在线实验教学平台及实现方法,利用Docker应用技术的操作系统级的虚拟化技术,为在线实验平台中的教师、学生等角色提供简单快捷的环境部署功能和稳定、自由、可定制的Linux教学实验环境。[0004]为实现上述目的,本发明采用的技术方案为:
一种基于docker的在线实验教学平台,包括创建的三种系统角色:管理员、教师和学生;
所述管理员的职能包括:docker镜像的拉取和创建、课程、实验的新增以及镜像与实验的绑定,包括:系统资源管理模块、docker资源管理模块和课程实验资源管理模块,系统资源管理模块包括系统资源管理、用户资源管理和角色资源管理,这三个模块为系统运行所需的基础模块,用户资源管理用于管理系统的用户资源,角色资源管理与系统资源管理协同工作,docker资源管理模块包括端口管理模块、镜像管理模块和容器管理模块,端口管理模块是docker容器使用的服务器资源管理页面,镜像管理模块是用于管理远程服务器中的docker服务内现存的镜像资源,容器管理模块是提供给管理员对学生、教师进行实验时产生的数量极多的容器资源进行管理的页面,用于管理员查看和删除学生、教师实验容器,课程实验资源管理模块包括课程类型管理模块、课程管理模块和实验管理模块,课程类型管理模块提供管理员查询修改课程类型的功能,在删除课程类型时要确保该课程类型下无在用课程,课程管理模块提供实验可的新增修改,实验管理模块为管理员提供课程实验的基础信息列表和新增修改功能;
所述教师的职能包括:课程实验的发布、学生实验进度的监督、截止实验以及学生实验结果的评价,包括实验发布模块、实验监督模块、实验评价模块和成绩展示模块;
所述学生的职能包括:创建实验环境并完成实验要求和查看实验评价,学生角色包括未开始实验、进行中实验、已截止实验和选课四个模块。
5
CN 109636691 A[0005]
说 明 书
2/10页
进一步的,用户资源为所有通过本平台申请注册的用户列表,包含用户注册时产
生的所有信息,用户信息包括用户名(学生、教师名)、用户号码(学生、教师编号)、用户密码、用户角色、系统ID等基础信息;用户角色总共分为:管理员、教师、学生和超级管理员;管理员管理教师和学生用户资源列表,超级管理员管理管理员、教师和学生的用户列表;管理员用户由超级管理员分配,教师与学生账户由使用者自助申请获得,超级管理员由系统指定。
[0006]进一步的,角色资源管理包含系统内部所有用户角色的列表,系统用户角色包含超级管理员、普通管理员、教师、学生四种基础角色,角色管理可以新增修改删除系统内部的角色资源,新增用户角色时需要为新增的角色资源指定对应的系统资源,即页面资源,系统会自动根据用户角色绑定的系统资源来展示相应的页面资源,角色管理不可删除四种基础角色但是可修改四种基础角色对应的系统资源页面。[0007]进一步的,系统资源管理页面包含系统内部现存的页面资源列表,这些资源可自由的分配给系统用户角色,为该角色提供对应的功能操作页面。[0008]进一步的,实验发布模块包含着管理员已经建立的、某一门课程或所有课程的、已发布或未发布或已截止的实验资源列表,每一条资源对应课程的一个实验,教师可在实验发布模块中设定起止日期来发布实验,或通过使用docker容器对某一个实验进行模拟实验,学生只能看到已经发布的实验。[0009]进一步的,学生在进行实验时的实验进度会以实验进度资源表的形式展示在实验监督模块,主要包括实验进度号、实验进度名称、实验进度备注、学号、学生姓名、实验名称、最近启动时间、实验完成度、实验进度状态、进入学生实验按钮和删除按钮。[0010]进一步的,学生实验只有两种操作:进入实验与清除并创建实验和停止实验,学生实验步骤包括:
功能1:进入实验容器:步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id在数据库中查询用户基础信息和用户容器信息;步骤3):如果用户信息已经含有容器信息,则跳转到步骤8),若没有则继续步骤4);步骤4):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源,并基于用户基础信息构建容器名称;
步骤5):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤6):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id;步骤7):构建容器基础信息,包括容器名、容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态和容器使用者信息等,插入数据库中容器表格;
步骤8):使用DockerClient类的实体对象,启动新创建的实验容器,并更新容器表格中的容器状态;
步骤9):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤10):执行结果返回。
6
CN 109636691 A[0011]
说 明 书
3/10页
功能2:清除并创建实验容器:步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器;
步骤5):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器数据卷信息;
步骤6):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源;
步骤7):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤8):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id(ID);步骤9):使用DockerClient类的实体对象,启动新创建的实验容器;步骤10):构建容器基础信息,包括容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态,更新数据库中容器表格;
步骤11):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤12):执行结果返回。[0012]功能3:停止实验容器:
步骤 1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):执行结果返回。[0013]进一步的,包括以下步骤:
管理员:步骤1):从docker官网拉取基础镜像;步骤2):制作所需的特定的镜像;步骤3):将新创建的镜像push到docker私有仓库;步骤4):将远程仓库中的镜像pull到本地服务器;步骤5):创建新的实验对象,并加入目标内容;步骤6):将拉取的镜像绑定到实验;教师:
7
CN 109636691 A
说 明 书
4/10页
步骤7):为新建实验设定起止时间;步骤8):发布实验;步骤9):等待学生进行实验操作,并监控学生实验进度;步骤10):等待学生实验,到达截止时间;步骤11):关闭学生实验容器,并提交学生实验进度;步骤12):依据学生容器检测结果,对学生实验进行打分点评;学生:步骤13):登录,并选择此课程选课;步骤14):查看实验内容并等待实验开始;步骤15):创建实验进度;步骤16):ssh界面内进行实验操作;步骤17):强制停止实验,并退出;步骤18):等待实验截止,查看老师点评。
[0014]为了极大的简化Linux实验环境的配置,基于docker的在线实验教学平台将采用docker虚拟化的技术。docker是一个客户/服务器(Client/Server,CS)架构,其中docker客户端为远程控制器,它通过TCP/REST向Docker Host发送请求来完成对远程docker服务器的控制,其中请求类型包括创建容器、运行容器、停止容器、删除容器、查询镜像等请求;并且,docker服务器在接收到请求的同时,会将请求转交给Daemon,通过它对docker客户端的请求进行相应的管理,随后再通过driver转发至容器中的libcontainer执行环境,这种类型的架构允许多个docker容器在共享同一个Linux内核的情况下完全隔离地运行,而且由于docker容器并不需要专用操作系统,从而实现了轻量级的要求。[0015]平台中把docker技术与课程实验相结合,以docker的操作虚拟化技术实现符合高效的、教学规律的、互不影响的Linux教学实验环境,然后将其嵌入一个完整的教师学生实验管理系统,最终形成一个基于docker的在线教学实验平台,属于一类JavaWeb项目,后台代码框架采用Springmvc-Spring-Mybatis的整合框架,前台使用JQuery、Easyui等技术,底层核心代码使用GitHub上的Docker-java开源项目。[0016]在docker技术与课程实验结合方面,实验教学平台中主要处理以下几个概念的相互关系:docker镜像与docker容器的关系、docker镜像与实验的关系、学生与实验的关系以及学生的实验进度与docker容器的关系。[0017]1.docker镜像与docker容器的关系
docker镜像与docker容器的关系是一对多的关系,docker在创建容器时需要以一个且唯一一个的docker镜像作为创建模板,用一个docker镜像可创建多个docker容器,用同一个docker镜像创建的docker容器所包含系统环境是完全一致的,docker容器只可能对应唯一一个docker镜像,docker镜像与docker容器是一对多的关系。[0018]2.docker镜像与实验的关系
系统中docker镜像与实验的关系是一一对应的。docker可以用一个docker镜像创建多个docker容器,其系统环境是一致的,而课程实验中,多个学生在一个实验下,将需要多个起始环境一致、互不干扰的实验进度,所以,docker镜像与实验一一对应,而docker镜像创建出的多个docker容器对应多个学生在某一个实验下的多个实验进度,每一个docker容器
8
CN 109636691 A
说 明 书
5/10页
对应一个实验进度。
[0019]3.学生与实验的关系
学生与实验是多对多的。学生可能需进行多个实验,一个实验必定包含多个选课学生。[0020]4.学生的实验进度与docker容器的关系
学生的实验进度与docker容器一一对应,即特定学生在某一个实验下拥有唯一一个与之对应的docker容器。
[0021]以上是底层技术的实现逻辑,然后再根据不同角色来划分实验教学平台的功能模块,系统角色主要分为三类:管理员、教师、学生。[0022]管理员主要职能包括:docker镜像的拉取和创建、课程实验的新增以及镜像与实验的绑定;
教师主要职能包括:课程实验的发布、学生实验进度的监督以及学生实验结果的评价;学生主要职能包括:创建实验环境并完成实验要求和查看实验评价。[0023]与现有技术相比,本发明的有益效果为:
相比于现有在线实验平台,本发明的基于docker虚拟化的课程实验主要优势体现在三个方面:
1)、它能够简化在服务器中配置相同实验环境带来的繁琐工作,提高教学效率,并减少环境部署过程中出现的问题;
2)、学生进行实验时可快速上手,操作便捷,多个学生同时实验时互不干扰,提高实验体验;
3)、可以在多阶段的实验环节中,为学生提供阶梯式的教学实验环境,大大降低学生进行课程实验的要求。
附图说明
[0024]图1是本发明的三种系统角色的主要功能模块及其各部分之间的总体关系图;
图2是本发明的docker在线实验平台中管理员角色使用流程图;图3是本发明的docker在线实验平台中教师角色使用流程图;图4本发明的docker在线实验平台中学生角色使用流程图;图5是本发明的docker在线实验平台底层使用docker-java api接口部分的详细流程图。
具体实施方式[0025]名词解释:
Docker:Docker是由原DotCloud(公司现已经更名为Docker公司)提出的一个开放平台,旨在为系统开发和管理人员提供一个创建、部署、运行分布式应用的容器引擎,让他们可以将任意的应用及其依赖环境打包到一个容器中,然后将容器分发到任何Linux环境中并以类似于轻量级的虚拟机的方式运行。[0026]Docker-Java:Docker-Java是一个GitHub上的开源项目,是一个可以提供所有docker指令服务的Java API client。本系统中将利用此功能实现所有的对于docker镜像和容器的创建、启动等操作。
9
CN 109636691 A[0027]
说 明 书
6/10页
Wssh:Wssh是一款轻量级的第三方服务,它可以通过HTTP请求来调用远程的一个
Shell,也就是说可以用浏览器来访问某个 Linux 服务器/虚拟机的终端。在实验系统中,它将用于访问用户角色创建的Docker容器,形成实验操作界面。[0028]Springmvc-Spring-Mybatis:其中spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。[0029]1、管理员
管理员的主要功能包括三大部分:系统资源管理模块、docker资源管理模块和课程实验资源管理模块。[0030]1.1、系统资源管理模块
此模块包含三个子模块:系统资源管理、用户资源管理和角色资源管理,这三个模块为系统运行所需的基础模块。用户资源管理用于管理系统的用户资源,即所有通过本系统申请注册的用户列表,包含用户注册时产生的所有信息,用户信息包括用户名(学生、教师名)、用户号码(学生、教师编号)、用户密码、用户角色、系统ID等基础信息;用户角色总共分为:管理员、教师、学生和超级管理员;管理员可管理教师和学生用户资源列表,超级管理员可管理管理员、教师、学生的用户列表;管理员用户由超级管理员分配,教师与学生账户由使用者自助申请获得,超级管理员由系统指定。[0031]角色资源管理与系统资源管理协同工作,角色资源管理包含系统内部所有用户角色的列表,系统用户角色包含超级管理员、普通管理员、教师、学生四种基础角色。角色管理可以新增修改删除系统内部的角色资源,新增用户角色时需要为新增的角色资源指定对应的系统资源,即页面资源,系统会自动根据用户角色绑定的系统资源来展示相应的页面资源,角色管理不可删除四种基础角色但是可修改四种基础角色对应的系统资源页面。[0032]系统资源管理页面包含系统内部现存的页面资源列表,这些资源可自由的分配给系统用户角色,为该角色提供对应的功能操作页面。[0033]1.2、docker资源管理模块
此模块包含三个子模块:端口管理模块、镜像管理模块、容器管理模块。其中镜像管理模块与容器管理模块分别对应docker虚拟化技术中的镜像、容器这两个概念,系统底层会使用docker-java API技术实现对远程服务器的docker操作。
[0034]端口管理模块是docker容器使用的服务器资源管理页面。基于docker的虚拟化技术,用docker创建的实验虚拟容器需要向外部提供一个ssh服务端口(系统内使用wssh登录)供外部访问。在本系统中,利用docker技术中的容器端口映射的规则,将docker容器的ssh服务端口映射到宿主机服务器上的任意一个端口之上,即用docker创建容器将占用一个或多个服务器端口资源,这里的端口管理模块就是提供该种类型资源的管理页面,它包含两个子模块:教师端口资源管理和学生端口资源管理,分别展示了分配给教师、学生这两个角色的端口资源占用情况。在此页面中,也提供了将空余端口资源指定给某一个用户的修改功能。
[0035]镜像管理模块是用于管理远程服务器中的docker服务内现存的镜像资源。镜像资源分为两类:本地服务器镜像资源与远程仓库镜像资源。本地服务器镜像资源展示的是该
10
CN 109636691 A
说 明 书
7/10页
实验平台服务所在服务器上的本地docker镜像资源,对于管理员来说,是可以随时用于绑定实验的镜像。远程仓库镜像资源是处于另一台专门用于提供docker镜像的linux服务器上的docker镜像资源,是由专业的docker镜像提供方所提供镜像资源池。管理员将所需要的镜像资源从远程镜像仓库中拉取到本地服务器,才能使用该镜像资源。[0036]容器管理模块是提供给管理员对学生、教师进行实验时产生的数量极多的容器资源进行管理的页面。管理员在这里可以查看、删除长期不用的、或者已经失去对应服务器容器资源的学生、教师实验容器。[0037]1.3、课程实验资源管理模块
此模块包含三个子模块:课程类型管理、课程管理、实验管理。课程类型管理提供管理员查询修改课程类型的功能,在删除课程类型时必须确保该课程类型下无在用课程。课程管理模块提供实验可的新增修改,课程信息包括课程名、课程号、任课教师、所属课程类型、选课密钥等。实验管理模块为管理员提供课程实验的基础信息列表和新增修改功能,其中包括实验名称、实验号、实验创建时间、实验所属课程、实验对应镜像、实验模板、实验内容、实验是否发布等信息。其中实验内容使用网络上较为流行的markdown富文本编辑器,提供上传图片与文档多格式编写,实现丰富清晰的实验内容展示。此外,在新创建的实验在使用前需要在此页面上进行实验镜像的绑定,绑定镜像之后,学生、教师才可进行实验容器创建。
[0038]2、教师
教师角色对应线下教学中的老师。在本系统中,该角色主要实现课程实验的发布、学生实验进行的监督和学生实验的评价三部分操作,对于每一个由教师任教的课程而言,总共包含三个操作模块:实验发布、实验监督、实验评价,最后还需要有一项学生成绩展示模块。[0039]2.1、实验发布模块
实验发布模块包含着管理员已经建立的、某一门课程或所有课程的、已发布或未发布或已截止的实验资源列表,每一条资源对应课程的一个实验,教师可在实验发布模块中设定起止日期来发布实验,也可以对某一个实验进行模拟实验(使用docker容器),学生只能看到已经发布的实验。[0040]2.2、实验监督模块
学生在进行实验时的实验进度会以实验进度资源表的形式展示在该模块,主要包括实验进度号、实验进度名称、实验进度备注、学号、学生姓名、实验名称、最近启动时间、实验完成度、实验进度状态、进入学生实验按钮和删除按钮。[0041]实验进度号:学生启动实验时在主机服务器的docker服务上启动的实验容器ID。[0042]实验进度名称:启动的容器名称。[0043]实验进度备注:启动容器时产生的端口映射表。[0044]学号:学生编号。[0045]学生姓名:进行实验的学生姓名。[0046]实验名:进行的实验名称;由学生信息和实验名共同标定一个实验进度,即某一个学生在某一个实验上产生唯一一个实验进度(容器),当学生的实验进度被暂停并再次重启时,实验进度不会消失,依旧保留上次的状态,但是实验进度(容器)被清除并再次创建时,实验进度重新开始。
11
CN 109636691 A[0047][0048][0049]
说 明 书
8/10页
实验完成度:由系统后台定时读取容器内自检脚本输出的结果。实验进度状态:实验进度的运行状态,即docker容器的运行或停止。进入学生实验按钮:教师进入学生实验的按钮,即利用 wssh登录学生正在进行的
容器。
删除按钮:删除该学生的实验。
[0051]2.3、实验评价模块
实验评价模块是教师对已经完成或截止的学生实验进行评价的页面。评价页面包含学号、学生姓名、完成的实验名称、最终实验完成度、实验完成度详情、是否已评价和评价按钮。教师根据最终实验完成度和实验完成度详情,再结合学生的课堂表现情况,给出最终的实验评价。最终评价由A、B、C、D四个档位和自由内容评价组成。学生的最终实验成绩由以下成绩公式一计算获得:
最终实验成绩=最终实验完成度*50±档位评价*权重 公式一其中,最终实验成绩始终处于0.0到100.0之间。[0052]2.4、成绩展示模块
成绩展示模块将以表格加圆饼图的方式展示某一课程、某一实验的学生成绩分布情况。
[0053]3、学生
学生角色在本系统中,主要是活动是:1、选课;2、根据教师发布的实验信息,使用系统提供的docker虚拟化技术进行模拟实验,并在实验结束后查看教师评价。其中docker虚拟技术对于学生角色是透明的,最终只体现为对于进行中实验的两种操作,以及wssh页面。学生角色主要分为未开始实验、进行中实验、已截止实验和选课这四个模块。[00]3.1、未开始实验模块
未开始实验是依据教师发布实验时设定的实验的起止时间而筛选出的实验资源列表。改模块包括实验名称、实验的起止时间、实验内容和实验目标。该模块的目的是为学生角色提供一个可以预习实验内容的活动窗口,并提醒学生合理安排实验时间。[0055]3.2、已开始实验
与未开始实验相对应,已开始实验是正在进行中的实验的资源列表,学生可以在此页面进行进入实验和清除并重启实验操作,同时也可以查询自己在该实验下的完成度。[0056]3.3已截止实验
与未开始实验相对应,该页面提供已经截止的实验的资源列表。学生在这里可查询某一实验的预期目标和具体内容,以及自己在该实验下达到的实验完成度和教师给予的实验评价。
[0057]3.4选课
提供给学生的选课接口,会展示学生尚未选修的实验课程,并提供选课操作。[0058]4、具体流程
以一个新建的课程实验为例,解释说明具体创建实验并使学生完成实验的具体流程,主要包括三个阶段,由三个角色共同参与:
管理员:步骤1):从docker官网拉取基础镜像;
12
[0050]
CN 109636691 A
说 明 书
9/10页
步骤2):制作所需的特定的镜像;步骤3):将新创建的镜像push到docker私有仓库;步骤4):将远程仓库中的镜像pull到本地服务器;步骤5):创建新的实验对象,并加入目标内容;步骤6):将拉取的镜像绑定到实验;教师:步骤7):为新建实验设定起止时间;步骤8):发布实验;步骤9):等待学生进行实验操作,并监控学生实验进度;步骤10):等待学生实验,到达截止时间;步骤11):关闭学生实验容器,并提交学生实验进度;步骤12):依据学生容器检测结果,对学生实验进行打分点评;学生:步骤13):登录,并选择此课程选课;步骤14):查看实验内容并等待实验开始;步骤15):创建实验进度;步骤16):ssh界面内进行实验操作;步骤17):强制停止实验,并退出;步骤18):等待实验截止,查看老师点评;5、底层docker技术实现
关于学生实验模块中对于创建docker虚拟化操作环境的实现,系统将其封装成三个子功能:进入实验容器、清除并创建实验容器、停止实验容器,并使用wssh的网页ssh工具提供登录操作实验容器的操作窗口。对于学生来讲,学生实验只有两种操作:进入实验与清除并创建实验,停止实验将在操作窗口关闭是自动执行,以节省服务器资源。以下是详细解释操作流程。
[0059]功能1:进入实验容器:
步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id在数据库中查询用户基础信息和用户容器信息;步骤3):如果用户信息已经含有容器信息,则跳转到步骤8),若没有则继续步骤4);步骤4):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源,并基于用户基础信息构建容器名称;
步骤5):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤6):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id;步骤7):构建容器基础信息,包括容器名、容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态、容器使用者信息等,插入数据库中容器表格;
步骤8):使用DockerClient类的实体对象,启动新创建的实验容器,并更新容器表格中的容器状态;
13
CN 109636691 A
说 明 书
10/10页
步骤9):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤10):执行结果返回。[0060]功能2:清除并创建实验容器:
步骤1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器;
步骤5):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请删除容器数据卷信息;
步骤6):根据用户基础信息在数据库中查询该实验所用的镜像名称,以及分配给该用户的端口资源;
步骤7):根据镜像、端口资源和容器名称,使用DockerClient类的实体对象创建新的实验容器;
步骤8):使用DockerClient类提供的获取容器信息的api接口,获取容器唯一id;步骤9):使用DockerClient类的实体对象,启动新创建的实验容器;步骤10):构建容器基础信息,包括容器唯一标识码、容器共享数据卷目录、容器创建时间、容器运行状态,更新数据库中容器表格;
步骤11):根据端口资源及其描述,构建返回信息类,向前端提供容器登录页面信息及容器提示信息;
步骤12):执行结果返回。[0061]功能3:停止实验容器:
步骤 1):根据系统中的配置文件docker.properties,创建docker-java的DockerClient类的实体对象;
步骤2):根据用户id,在数据库中查询用户正在使用的容器信息,并获取容器唯一标识码和容器名称;
步骤3):使用DockerClient类提供的api接口,利用容器唯一标识码,向服务器申请停止容器;
步骤4):执行结果返回。
[0062]上述实施例不以任何形式本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围。
14
CN 109636691 A
说 明 书 附 图
1/3页
图1
图2
15
CN 109636691 A
说 明 书 附 图
2/3页
图3
图4
16
CN 109636691 A
说 明 书 附 图
3/3页
图5
17
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务