卢春光,秦惜梦
(河南职业技术学院 现代信息技术学院,河南 郑州 450000)
随着信息技术的快速发展,各种新技术层出不穷,容器作为云计算中的热门技术在不同行业方向发挥着积极的影响。目前,各行业缺少掌握容器技术的专业技术人才,Docker是现今比较主流的容器平台,许多高职院校相继开始Docker容器技术相关课程,加大对专业技术人才的培养。当前的Docker容器技术教学存在内容枯燥等现象,本文提出的以“Python应用程序容器化”进行案例式教学的方法,可以使学生更加容易掌握Docker技术,对于提高课堂教学质量具有较好的效果。
在不同高职院校,Docker容器技术相关课程设置方式有所区别,有些高职院校在计算机相关专业单独开设容器技术课程,有些则是融入云计算技术课程中。目前,对容器技术的研究主要是Docker在其他系统或者课程中的应用。周桥[1]提出将OBE理念融入Docker容器技术课程,进行混合式实践教学分析和研究。李艳红[2]提出将Docker技术融入搭建研发环境或者部署环境,对网络课程教学进行了一定的分析和研究。谢睿等[3]提出基于Docker技术,从服务模块、镜像管理模块、资源调度模块、集群管理模块和Web管理服务模块对高校中空闲的PC资源和网络资源建立PaaS平台进行了分析和设计。徐峰等[4]分析了容器技术的原理,对Docker技术在旧服务器上部署带桌面的Linux操作系统进行了研究。鲍洪生[5]对Docker部署靶机和CTF平台在网络安全教学中的使用进行了分析和研究。朱来雪[6]分析了Docker技术的使用,研究了将多个服务部署到单台服务器,提高了服务器的使用效率。王湘渝等[7]基于Docker对Linux实验平台进行了部署,分析了Docker容器的特点和应用场景。多数课程教学过程中理论内容较多,而高职院校学生大多学习能力较差,对理论知识缺乏兴趣,不知道如何将知识点应用于实践。本文以“Python应用程序容器化”为例,将各个知识点融入案例,对Docker容器技术课程进行案例式教学,使学生从实践中学习,提高了学生的学习兴趣,提升了课程的教学效果。
Docker容器技术是一种轻量的虚拟化,可以隔离不同的进程和资源,在系统开发、软件测试以及实际生产中具有广泛的应用。Docker版本有企业版(Docker EE)和社区版(Docker CE),企业版具有更丰富的功能,需要额外收费;社区版可以免费使用,功能虽然较少,但能够满足日常的教学和学习使用。
Docker容器可以部署在不同的操作平台。Windows平台,可以通过下载DockerToolbox的exe安装包直接安装;Linux平台,可以在线或离线安装,在线安装需要对Linux系统进行一些环境设置,例如防火墙、Selinux等服务要关闭,设置国内稳定的镜像仓库源等,使用“yum install-y docker-ce”即可完成最新版的Docker安装。使用“docker version”命令可以查看安装的Docker版本,通过“docker run hello-world”命令运行hello-world镜像来验证Docker CE是否能够正常使用。
Docker课程的知识点比较零碎,多数在教学中忽视了学生学习课程的目标是对知识的具体应用,尤其是高职院校的学生,如果没有案例应用,几乎很难对知识达到掌握。笔者主要教授计算机网络专业的学生,对于Linux操作系统的使用比较熟练,因此在教学过程中对该部分内容进行精简化讲授,重点讲解Docker的实际应用。Python作为当前非常流行的编程语言,在大数据、人工智能等方向应用广泛,学校计算机大类的专业几乎都开设了Python相关课程,以“Python应用程序容器化”为案例进行课程教学,可以使大部分学生更容易接受。
Flask是一个轻量级的Web框架,可用于Python Web开发,通过Docker技术可以快速部署Flask应用。Flask应用的部署需要编写的Python文件非常简单,对于高职院校的学生,比较容易上手,排错也比较简单。在系统的Root目录下,通过“mkdir python-flask”命令创建名为“python-flask”的Python项目,通过“touch flask_test.py”命令创建Python应用文件“flask_test.py”,编辑代码如下所示。
Docker构建镜像的方式有两种,基于容器生成镜像和基于Dockerfile生成镜像。Dockerfile文件由不同的指令和参数构成,每一条指令构建镜像的一层,文件中的内容描述了构建镜像需要的所有操作。Docker可以通过创建好的Dockerfile文件方便快速地构建Docker镜像,当需要添加、删除或者修改镜像时,直接在Dockerfile文件中进行即可快速重新生成镜像。在项目目录“python-flask”下通过“touch Dockerfile”命令创建Dockerfile文件,编辑内容如下所示。
为了方便部署,需要在项目目录“python-flask”下,通过“touch requirements.txt”命令创建一个名为“requirements.txt”的文件,将Dockerfile文件中需要安装的依赖包及其版本写入文件。这里仅需要安装Flask,在“requirements.txt”文件中直接写入Flask。
编辑完成Dockerfile文件,在项目目录“pythonflask”下,通过命令“docker build-t flask_web:1.0.”构建名为“flask_web”标签为1.0的镜像。Docker将会按照Dockerfile文件中每一层的内容,执行基础镜像的拉取、依赖包的安装、相关环境的配置和启动命令参数的配置等操作。可以通过“docker images”命令查看当前所有的镜像,或者通过“docker images flask_web:1.0”命令直接查看上述构建的镜像。通过命令“docker run--name flask-web-p 5000∶5000 flask_web:1.0”即可使用上述构建的镜像,启动名为“flask-web”容器。
打开浏览器,输入“http://192.168.200.191∶5000/”即可查看部署好的应用,Python应用部署如图1所示。
图1 Python应用部署
通过“docker run”命令可以方便地启动单个容器,部署单个应用程序,对于多个容器和多个应用程序的部署,可以使用Docker Compose进行自动构建和编排。在项目目录“python-flask”下创建一个Docker Compose文件“docker-compose.yml”,编辑内容如下所示。
通过“docker-compose up”命令,可以启动应用程序。在“docker-compose.yml”文件中定义了一个服务Flask_web,使用Dockerfile文件构建的镜像启动服务,同时设置了Volumes卷将项目目录挂载到了容器中的“/code”目录,可以使用户在不需要停止服务的状态下修改“flask_test.py”程序代码,并且立即生效。修改内容如下。
修改完成后,对浏览器执行刷新操作,即可看到效果,如图2所示。
图2 修改后的应用部署
通过对Python应用的部署实例,学生可以对Docker镜像的构建方法、Dockerfile文件的编写、Docker容器的运行以及Docker容器的编排有了一个循序渐进的认识,通过Docker Compose使学生更清晰地认识到容器技术的优势,加深对Docker容器技术在项目开发中应用的理解。案例的学习,使学生能够学以致用,能够增加学习的成就感,增强进一步学习的热情和兴趣。
本文分析了高职院校Docker容器课程的教学现状,提出通过将“Python应用程序容器化”案例融入课程教学的方法,由浅入深地介绍了Docker学习过程中的镜像构建、容器运行、Dockerfile和Docker Compose等重要知识点,使学生通过简单项目的部署,激发学习兴趣,增强课堂的教学效果。