张皓瑜,吴合力,张雨平
(四川旅游学院,四川 成都 610100)
0 引 言目前在云计算技术的高速发展的背景下,高校对于容器化技术培养的课程主要依赖于“授课为主,实验为辅”的教学方式。在实验环节,避免不了需要学生搭建Docker 相关的实验环境,并且在Docker 环境搭建之前,还需要学生完成Linux 虚拟机的安装,那么对于学生而言,在实验教学环节中,Docker 环境搭建困难、配置复杂、效果差、资源占用多等诸多问题都会降低学生对于该课程的学习效率,那么针对以上出现的各类问题,Docker 的在线实验教学可以很大程度上有效解决。
从DockerCon 2017 会议之后,Marcos Nils 和 Jonathan Leibiusky 决定共同打造一款可以在浏览器上帮助大家学习Docker 的产品,PWD(Play With Docker)便由此诞生,PWD 是一种利用云主机搭建的实验环境,具有简便性、开源性、搭建即用的特点,Docker 在线实验便是基于PWD 进行开发的实验教学平台,学生用户可以进行拉取镜像、构建容器、运行Docker 容器等Docker 命令相关的操作,甚至可以在实验平台借助于Docker Swarm 技术搭建集群。Docker在线实验平台借助于LXC(Linux container)内核虚拟化技术和AUFS(advance multi-layered unification filesystem)分层镜像方法,可以在几乎没有额外开销的前提下提供资源隔离的应用运行环境,并且具有启动速度快和资源占用少的优点。一台普通服务器能够运行数百个容器(container)。
1 Docker 的概念原理Docker 是一种开源的高级虚拟化技术引擎,让开发者可以打包业务相关的应用以及依赖到一个可移植的镜像中,然后发布到任何流行的Linux 或Windows 操作系统的机器上。Docker 所拥有的高度隔离性、高效率、高资源利用率、强扩展性、轻量等特点,极大地减少了用户成本,满足了用户各式各样的环境配置需求。
Docker 虚拟化技术有三大核心基础概念:容器(Container),镜像(Image),仓库(Repository)
(1)容器(Container):Docker 每运行一个轻量进程都与其他进程互不干扰,可以理解为就像一个个小的盒子,因此称之为容器,容器是完全使用沙箱机制,相互之间不会有任何接口,笼统一点的表现方式就是盒子与盒子之间相互隔离,互不干涉。
(2)镜像(Image):用户可以在容器中,添加新的环境,搭配新的配置,放入容器中,进行打包再次整合为一个新的镜像,镜像是一种特殊的文件存储方式以及不一样的冗余类型,可以把一个镜像看成一个完整磁盘的副本。Docker虚拟化技术里面,启用Docker 容器的基础便是镜像,镜像中包含了各式各样容器必备的程序和相关配置环境,同时,开发人员也可以自己定义容器相关的程序以及环境,并且,用户也很容易通过互联网下载他人分享的镜像文件,通过简单的命令创建所需的容器。
(3)仓库(Repository):顾名思义,存放物品的地方,这里的物品指的便是镜像,所以也称之为镜像仓库,它采用一种集中式的存放方式,每当用户需要相关镜像时,只需从中直接使用。同时,每个用户都拥有自己独立的镜像仓库,也可以把自己的镜像上传进镜像仓库中,用户仓库中的镜像可以选择性的对外开放,对于初学者而言,十分简单,快捷,只需输入几条简单的拉取镜像命令便能从其他用户仓库中直接拉取相应的镜像。
2 Docker 在线实验平台的应用2.1 Docker 在线实验教学平台客户端可以通过浏览器访问Docker 在线实验平台,当客户开启一个实验室(Create a new instance),终端会给客户端一个独立的Session,每一个客户端都有一个独立的URL。在线实验室的工作环境,其实是一个独立的镜像(Image)开启的容器(Container),其背后设计到的技术便是Dind(Docker in Docker),完成实验室开启后,便能正常使用Docker 环境,进行实验教学任务。Docker 在线实验平台提供了一个非常方便的实验环境,用户不仅仅可以尝试学习Docker 技术,还可以快速创建服务节点,无需安装SSH 客户端,自动实现打开外部服务端口,并且提供一键搭建集群的功能,高效的完成教学任务。Docker 在线实验教学平台示意图如图1所示。
图1 Docker 在线实验平台示意图
2.2 旅游景区后台管理系统部署在部署相关后台系统时,可预先在云服务器搭建好后台系统所需要的Mysql 数据库、Redis 服务器等相关环境,以便更加方便、快捷的练习,在实际的操作生产过程中,可以使用Docker-compose 进行相关环境的搭建,Docker-compose可以笼统理解为一个yml 的脚本文件,以下实验步骤是以部署旅游景区后台管理系统来进行研究,仅提供参考练习。
2.2.1 利用Docker-compose 创建Mysql 容器
在root 目录下创建docker,通过mkdir docker 命令,在docker 目录下创建mysql,通过mkdirmysql 命令,创建docker-compose.yml 文件,使用vim docker-compose.yml 命令,编写docker-compose 文件进行相关环境的配置,创建完成使用守护式运行的方式docker-compose up -d 进行启动。创建Mysql 容器部分命令如图2所示。
图2 创建MySQL 容器命令
2.2.2 利用docker-compose 创建redis 容器
在docker 目录下创建redis,通过mkdirredis 命令,同时创建docker-compose.yml 文件,使用vim docker-compose.yml 进行编写相关的环境配置,文件创建完成dockercompose up -d 进行启动,配置命令如图3所示。
图3 创建Redis 容器命令
2.2.3 后台管理程序与后台程序打包docker
容器创建成功后,还须将后台管理程序与数据库建立连接,之后即可将整个程序进行打包,在项目打包前须将项目中需要引用后端程序的地方改成服务器地址及相应端口。后台程序与数据库连接配置如图4所示。
图4 后台系统配置文件
2.2.4 在云端创建java、nginx 容器
项目的发布可依赖Nginx 实现,需要先创建Nginx 容器。将打包好的后台管理系统放在Nginx 服务器的HTML目录内,配置nginx.conf 文件,完成Nginx 代理的配置。配置Nginx 文件如图5所示。
图5 配置Nginx.conf 文件
之后配置dockerfile 与docker-compose 文件,便可使用docker-compose up -d 命令基于docker 运行项目。
2.2.5 访问端口测试
旅游景区后台管理系统部署完成以后,可以通过之前配置的服务器地址与端口进行访问,打开配置的浏览器,测试平台运行是否正常。如图6所示。
图6 旅游景区后台管理系统页面
3 Docker 在线实验平台的应用成效以容器化技术为核心的Docker 引领了一场影响了整个IT界的技术革新,不仅在彻底改变着应用开发和发布的方式,同时改变着云计算领域的运行规则,并且以Docker 技术为代表的容器技术渐渐成为微服务架构实现过程中的重要手段,通过Docker 在线实验平台,能让学生更加充分、细致的了解到Docker 虚拟化技术的核心,并且借助于Docker本身具有的高效,轻便,可移植的特性,极大的减小了学生的学习成本,提高了学生的专业技术,有效的锻炼了学生的学习思维。
4 结 论利用Docker 在线实验平台,充分体现了学校“以教学为主,实验为辅”的教学经验思想,同时增加了老师的教学效果,提高学生的学习兴趣,并且在如今应用本身的发展背景下,Docker 在业界的广泛应用,很可能成为应用市场的标准化,利用Docker 在线实验平台的教学,不仅仅增强了学生的专业知识技能,同时也能让学生提前了解行业,提高了学生的就业概率。