当前位置:首页 期刊杂志

基于Docker服务器的云平台实现

时间:2024-05-04

葛育佳 李亮 陆冬磊

摘要:随着大学计算机专业学习进度的增加,专业课越来越多,专业课上所需要的软件也越来越多,軟件所需要的环境也越来越复杂,软件运行环境在软件中扮演着重要角色,他肩负着保证软件正常运行的重任,但是不同的软件所需要的兼容性不同,所需要的环境也不同,将不同的软件安装在同一个系统上极易出现环境不兼容导致程序崩溃,如果使用虚拟机分软件安装虚拟系统,会导致极大的资源浪费和资源占用,电脑的性能将急剧下降,本文基于docker并结合实际案例就解决单台电脑同时运行不同环境的软件导致性能下降问题进行了探讨和分析,通过本文的论述为广大计算机专业的教师和学生提供参考和建议。

关键词:Docker;容器;服务器;云平台

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)04-0230-03

Abstract: With the increase of the learning progress of computer specialty in universities, more and more specialized courses, more and more software needed in specialized courses, and more and more complex environment needed for software, the software running environment plays an important role in software. He shoulders the responsibility of ensuring the normal operation of software, but different softwares. The compatibility of software is different and the environment is different. Installing different software on the same system is very easy to cause program crash. If the virtual system is installed with the Sub-Software of virtual machine, it will lead to a great waste of resources and resource occupancy, and the performance of computer will decline dramatically. Based on docker and practical cases, this paper discusses and analyses how to solve the problem of performance degradation caused by software running in different environments on a single computer at the same time, and provides reference and suggestions for teachers and students of computer specialty through the discussion in this paper.

Key words: Docker; container; server; cloud platform

在教学活动中,经常会出现这种情况:某些课上需要用到两个环境相冲突的软件,这时就需要重启电脑,但是重启电脑很耗费时间,使用虚拟机虚拟两台计算机虽然可以让两个软件同时运行,但是性能会大打折扣,也会造成物理机的资源浪费,本文就相关问题进行探讨,并就使用docker技术解决此问题进行实验,探索解决该问题的可行性。

1 Docker简介

Docker是基于linux内核的类似于虚拟机的开源的容器引擎,能够实现虚拟化的系统及操作,其实docker本身不是容器,实质为版本管理工具,根据Apache2.0协议实现,最初利用Go语言编写[1][2]。2013年,由dotCloud公司对外公布了开源项目Docker,不断简化容器方案。Docker可以解决统一化方式管理全部容器的困难,并且提升了性能和高可扩展能力。Docker容器的发明是采用集装箱思想,为应用提供了基于容器的运输系统。Docker将任何应用和依赖封装成轻量级、自包含、可移植的容器。

2 项目设计

2.1工作方式

Docker在创建容器的时候,它会加载指定的仅读镜像,而且在镜像上会加入一个可读可写的一层(就是把该镜像所在的目录复制一份到/var/lib/docker/aufs/mnt下的以ID号码为文件夹名称的目录。使用chroot命令即可进入此文件夹,其目录结构与容器里面的目录一致)。

若在正在运行中的容器中改动现有的一个已存在的文件,那么该文件将会从镜像的只读层复制到读写层,实际上该镜像上的文件仍没有改动,只是镜像中的该文件已经被读写层镜像中修改过的文件所隐藏。若删除现有的docker容器并使用原来的镜像再一次创建容器并使用时,之前所做的修改将无法保存。

2.2工作流程

(1)创建镜像,通过创建Dockerfile文件,将mysql容器配置的数据文件存放于此。

(2)生成容器,将所有的镜像文件整合到一起生成Docker容器,安放、运维、测试都在容器中进行。

(3)镜像的上传与下载,通过docker官方提供的平台进行使用与传播。

2.3 Docker安全性

在使用Docker时采用不恰当的安全方式可能会将威胁到主机的安全。而对于docker有两个关键的技术:“一个是linux容器技术,另一个是docker镜像技术。”[3]其中,Namespace用于实现操作系统之间的资源互相隔绝,为进程提供了不一样的命名空间;DDoS拒绝服务即为多租户的系统中最常见的黑客攻击方式,一个进程或一组进程企图消耗当前系统的所有可用资源,来达到干扰其他正常进程操作的目的;Capability的能力机制是linux内核本身所支持的安全性特征,可在进程和文件中实现更细精度的权限管理;用户也可以选择启用现有的安全软件或安全机制来加固Docker的安全,比如SELinux等;Docker容器是通过Docker的镜像来启动的,如果镜像的本身含有安全漏洞或者攻击者将精心设计的木马植入镜像,那么它带来的危害可能会像病毒般迅速的传播。[4]

3 环境配置

3.1虚拟机配置

虚拟机使用了VMware15,如同主机,可以简单地虚拟出所有的主流系统。首先,先安装VMware15,创建典型虚拟机。再用CentOS 7 安装镜像进行安装,之后在对硬件进行配置,分配内存、CPU、硬盘等,然后用在实体机安装系统的方式安装CentOS 7在虚拟机上。安装完成后,在刚刚装好的centos7的终端内使用linux shell命令,来进行系统操作。

3.2 Docker安装

迄今为止,CentOS只在内核的发行版本中支持Docker。在CentOS 7上,Docker运行的前提是需要为64位操作系统且内核版本需要在3.10及以上版本才可以运行。使用uname -r 命令确认当前的系统内核版本。先用yum install -y yum-utils device-mapper-persistent-data lvm2命令安装一些必要的系统工具;如图1所示:

再使用yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo命令添加软件源信息;如图2所示:

4 项目实现

在Linux中使用vim编辑器创建docker镜像,在docker hub下拉取mysql镜像,完成上传docker hub与下载等一系列操作。之后测试镜像在容器中运行的情况。

4.1创建镜像

首先,创建目录和一个Dockerfile文件,其中包含一些创建镜像的指令。使用以下三条命令完成以上动作:mkdirmysql cd mysql vim Dockerfile。在Dockerfile中的每一条指令都是创建镜像中的一个层。在Dockerfile中使用#来注释,FROM命令意义是使用哪一个镜像作为基础镜像(即父镜像),以RUN为首的指令则会在创建过程中进行运行操作。Dockerfile文件可以在网上下载或者自己编写,之后使用Dockerbuild命令来创建镜像。

4.2运行容器

可以将Docker容器理解为将一个进程在一个封闭且安全的环境中运行。此环境包含了此进程运行所不可或缺的资源,包括系统类库、shell脚本、文件系统等等。此环境默许不会运行任何的程序,需要在环境中启动一个进程来打开这一容器。此进程也是该容器的惟一的进程,当该进程结束时,容器也将会完全停止。首先创建容器需要有镜像文件,可以通过Docker镜像文件来使用Docker run命令,镜像文件即可运行成为Docker容器。启动容器,在容器之中运行相应的程序就可以达到快速的部署以及应用的隔离。通过命令将之前创建的boyan_py和busybox两个镜像运行成为容器。命令为docker run -d -it boyan_py;docker run busybox。容器成功运行之后,运行MySQL,进行简单的测试,检测MYSQL的可行性以及容器是否已经安装完成。

4.3开源共享

在修改过某一个容器后,通过运行Docker中的commit命令,保存对容器中数据的修改。在Docker里保存目前状态的整个行为称为托付,原理和虚拟机的快照功能相类似,Docker为了把保存修改后的容器与没有保存的旧容器相区别,就会产生新的版本号。可以使用dockerps -l命令来获得容器的id,通过输入命令:$docker commit 83ae boyan/centos:7.1,可以把这个镜像保存在boyan下的centos:7.1文件。不需要拷贝完整的id,只需要开头的三至四个字母就可以将其区分开。之后可以通过docker push命令,将某一个镜像发布到官方的检索网站,通过分享到类似的开源平台,在一方面可以重新使用,在另一方面也可以分享该镜像使用,达到再发行的目的,提高使用效率,也可以避免重复劳动。通过docker images命令就可以列出所有已经安装的镜像。

5 调试和运行

5.1 拉取共享镜像

在此前已经安装好的VMware 15 上创建第二台虚拟机,配置与第一台保持一致。在刚刚创建好的新虚拟机中安装与之前相同的Linux系統,在登录之后就安装Docker,安装方法与之前虚拟机相同。新虚拟机创建好Docker后,拉取之前上传好的镜像文件,拉取回本地的镜像文件的文件名应与上传时保持一致。[5]

5.2 检测拉取镜像的可用性

可以使用docker run命令来运行刚刚拉取的镜像文件,让其创建好docker的容器,创建好容器后,在这个容器中开始检验MySQL程序功能,以此来测试该容器的稳定性与性能。

6 结束语

MySQL程序的成功运行,证明了系统运维的可行性。本篇文章通过创建镜像,运行容器以及镜像共享,成功验证了Docker容器的轻量级特点和快速部署特点,展现了Docker类似于集装箱和虚拟机的技术在运维平台的搭建中广泛的应用前景。伴随着互联网时代的飞速发展,程序开发项目和运维项目的日益增多,快捷且方便地搭建运行环境必将成为未来的趋势。Docker环境成功降低了开发人员的劳动强度,简化了与测试人员以及维护工程师的配合,方便于集成环境中开展验证和部署工作。目前Docker集中在linux系统上,在未来还需要考虑Docker在MAC OS 以及Windows系统中的应用和安全共享,平台移植,安全机制等方面的应用。

参考文献:

[1]易升海,彭江强,卿勇军,伍琪.浅析Docker容器技术的发展前景[J].电信工程技术与标准化,2018.

[2]杨浚.浅析Docker的资源隔离和限制[J].科技尚品,2016.

[3]宋佳.云主机上Docker的搭建[J].求知,2018.

[4]周婧. 基于Docker技术的安全性研究综述[J].商情,2016.

[5]张延冬,邢艳芳.基于Docker的运维平台设计[J].计算机时代,2018.

【通联编辑:王力】

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!