基于Docker容器虚拟化技术的WordPress系统研究

2020-10-14 01:04周少珂吴华芹谢妞妞付媛冰
网络安全技术与应用 2020年10期
关键词:虚拟化容器数据库

◆周少珂 吴华芹 谢妞妞 付媛冰

基于Docker容器虚拟化技术的WordPress系统研究

◆周少珂 吴华芹 谢妞妞 付媛冰

(河南应用技术职业学院 河南 450042)

随着计算机硬件技术发展,由依靠数量的增加以提高其运行效率的横向传统发展模式,逐步向提高硬件利用率支持虚拟化的纵向发展模式。根据应用虚拟化技术的基础架构不同,分为软件虚拟化和硬件虚拟化两类。首先针对基于Docker容器的Linux开源操作系统的软件虚拟化技术进行研究;然后在Linux系统平台上搭建能够资源隔离的Docker容器,并在该容器中搭建和配置WordPress博客项目系统;最后通过使用Docker容器模式与传统模式的系统进行对比,表明使用该Docker容器虚拟化模式架设的系统更加高效、稳定,为Docker虚拟化的进一步应用研究做好准备。

云计算;虚拟化;容器;Docker;Linux

1 Docker容器配置

随着计算机硬件技术的发展,各项硬件技术指标都得到了巨大提高,但单纯地提高各项硬件指标,已无法满足人们对工作效率的需求。虚拟化技术的产生和发展,进一步提升各个硬件设备工作中的并发量,能够进一步提高现有的硬件资源利用率[1]。

虚拟化技术是计算机资源管理技术的一种,通过一定的技术手段将底层的硬件资源如CPU、内存、硬盘、网络等设备,按照一定组织方式进行抽取、组合,打破传统之间的隔离、物理硬件之间不可切割的障碍,使用户按比原本更加合理的方式,利用逻辑组织硬件资源的技术[2]。根据作用对象不同可分为:硬件虚拟化和软件虚拟化;根据作用层次模型不同可分为:寄居架构虚拟化和裸金属架构虚拟化;根据虚拟化程度不同可分为:半虚拟化技术和完全虚拟化技术[3]。为更好研究虚拟化技术理论,从其作用层次模型中入手,进行理论分析和实践配置,最终得到研究结果。

随着云计算技术的成熟发展,并行计算、网格计算、分布式计算也日益凸显其重要地位。云计算服务层次模型可分为:基础架构服务层IAAS、平台架构服务PAAS层和软件架构服务SAAS三层[4]。

基础架构服务IAAS层:主要根据底层现有物理硬件进行分割、抽取、逻辑组织成统一的,为上层PAAS平台提供服务[5]。平台架构服务PAAS层:主要根据IAAS层的硬件资源进行统一环境平台的搭建,逻辑资源虚拟化的统一调度,为SAAS层提供平台服务[6]。软件架构服务SAAS层:主要根据PAAS层提供统一平台环境,使用B/S服务模式直接提供给用户使用和管理[7]。

通常使用虚拟化技术实现其PAAS架构平台服务,其中基于底层硬件虚拟化技术有:KVM[8];基于软件操作系统虚拟化技术有:Docker容器技术[9]。文本针对软件操作系统的Docker技术进行探讨研究。

Docker容器技术是PAAS提供商DotCloud开源的基于LXC的高级容器引擎,源代码托管在GitHub上,基于Go语言并遵循Apache2.0开源协议的虚拟化技术[10]。Docker容器主要组成有:仓库(Registry)、镜像(Image)和容器(Container)。其中三者之间可以通过一定方式进行转化,具体如图1所示。

Docker容器是运行在Linux操作系统上的一个实现资源打包隔离的一个系统进程,当其进程关闭或Kill掉时,其Docker容器就被关闭。在系统上系统进程之间互不干扰,保证了进行之间的有序运行。由于Docker使运行在Linux系统CentOS7.0版本以上,内核Kernel版本要求至少3.10版本以上,因此CentOS6系列系统中是无法配置和运行Docker技术[11]。本文通过运行Docker容器技术部署WordPress系统项目和传统Linux操作系统部署WordPress系统项目进行对比,进一步研究Docker容器技术的稳定性和高效性。

图1 Docker容器组成

2 传统模式架设WordPress

如今95%企业服务器使用均为Linux操作系统,为了统一实验环境,使用均为CentOS-7-x86_64-DVD-1511.ISO镜像,其CentOS7.2版本,Kernel3.10内核版本,使用VMware Workstation15版本、2.0G内存、2核CPU、50G硬盘,创建一台CentOS7.2主机,作为虚拟机基础环境[12]。

虚拟主机创建启动之后,需要安装WordPress系统项目所需的RPM包:httpd-2.4.6-40.el7.centos.x86_64.rpm、mariadb-5.5.44-2.el7.--centos.x86_64.rpm、mariadb-server-5.5.44-2.el7.centos.x86_64.rpm、php-5.4.16-36.el7_1.x86_64.rpm、php-mysql-5.4.16-36.el7_1.x86_64.rpm因为本身CentOS7.2镜像中含有该类包,因此需配置本地YUM源,所涉及的软件包前期全部整理到位,使用“yum install -y 软件包名”进行安装,如图2所示。

图2 使用本地YUM源安装所需软件包

成功安装软件包后,以ROOT身份使用“mysql_secure_installation”命令进行MariaDB数据库初始化配置,设置root密码设置为“000000”。并通过“mysql -uroot -p000000”命令再次登录该MariaDB数据库,并创建一个名为“WordPress”的数据库,如图3所示。

通过SecureCRT软件进行上传WordPress-5.0.2-zh_CN.tar.gz压缩包到Linux系统中的/root目录下,并使用“tar -zxvf /root/wordpress-5.0.2-zh_CN.tar.gz -C /var/www/html”命令将压缩包解压到http服务固定的/var/www/html目录,如图4所示。

图3 创建WordPress数据库

图4 解压WordPress主项目页面

修改WordPress包中的“wp-config-sample.php”文档将其重命名为“wp-config.php”,并进入该文档进行修改1.WordPress数据库名称;2.Mysql数据库用户名。3.MySQL数据库密码,三项配置,如图5所示,其余项目无须配置。

图5 修改WordPress配置文档

重启 WWW服务,通过前端(建议使用谷歌)浏览器输入虚拟机IP地址即可登录WordPress博客系统,对WordPress博客系统进行用户名、密码和电子邮箱等注册后,即可登录博客系统平台,如图6所示,通过使用TOP命令进一步查看Linux系统的各项参数利用率,如图7所示。

图6 成功登录WordPress系统

整个项目系统配置过程需要配置软件较多,配置步骤较为复杂。不同软件之间也容易出现版本不兼容的现象,对于初学者相对难度较大,把大部分时间和精力花费在软件的搜找和软件版本的兼容性上,不能够及时准确对整个项目系统进行研究。

3 Docker容器架设WordPress

使用同样上述传统配置的基础环境,因为CentOS7.2版本Kernel内核版本3.10以上,因此可以对其进行容器虚拟化技术配置,但需从开源镜像网站中下载“docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm”和“docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm”两个Docker软件包。虚拟主机Centos7.2,需要使用“桥接”网络连接模式,并进行网络配置保证能够正常连接外网,使用Internet中YUM源。

部署Docker容器之前,还需一些基础服务配置:(1)关闭其虚拟机防火墙并开启自动关闭功能;(2)关闭Selinux防火墙配置并更改为“disabled”;(3)因Docker容器需对数据进行过滤专业,故开启IPtables的数据过滤功能并开机自启。如图8所示,使用“yum update”系统命令进行系统软件包的更新,最后重启系统。

图8 Linux系统中基础服务配置

系统更新完软件包后进行重启,使用yum命令安装“docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm”和“docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm”两个Docker软件包,成功安装后进行“systemctl start docker”和“Systemctl enable docker”的Docker容器的重启和开机自启配置,使用“docker version”进行容器版本的查看。

Docker容器成功启动后,就可直接从网络仓库中进行MariaDB数据库镜像和WordPress镜像的PULL拉取,下载到本地容器中。由于全球最大开源的容器仓库在国外,因此下载时网速会较慢,可以配置加速器进行反向代理以此来加快下载的速度,本文中该加速配置功能不是重点因此可忽略不予考虑,如图9所示。

因为整个下载过程中连接网络,默认都使用较新的软件版本,软件的兼容性也可不用考虑。使用“docker run --name DB --env MYSQL_ROOT_PASSWORD =000000 -d mariadb”和“docker run --name mywordpress --link DB:mysql -p 8888:80 -d wordpress”命令运行两个容器进程,将WordPress中的80端口映射到容器中8888端口。如图10所示,分比为:1.MariaDB数据库容器进程;2.WordPress容器进程。

“--env MYSQL_ROOT_PASSWORD=000000”命令中需要对MariaDB数据库进行初始化环境变量设置(密码设置),以便保证数据库中的3306端口正常运行。“--link DB:mysql -p 8888:80”命令设置链接参数能够使WordPress项目中的mysql数据库链接到MariaDB数据库中,保证MariaDB数据库和Word Press系统的数据关联性。最后通过“docker ps -a”进行看看Docker中运行的容器Container数量、名称和端口号。

图10 Docker中运行两个Container进程

通过物理主机浏览器IP+映射端口号,进行系统的登录。最终和传统模式下的配置WordPress系统相同效果。通过使用TOP命令进一步查看Linux系统的各项参数利用率,如图11所示。

图11 查看系统内部的开销

4 结语

本文通过传统模式下软件包安装和使用Docker虚拟化技术安装的两种WordPress项目进行配置,进行各项影响性能参数进行如下表1进行分析。

通过表1可以看出,使用Docker容器虚拟化技术的WordPress博客系统安装部署简单、方便,且系统中CPU、内存占用量较低。Linux系统运行期间仅仅能够维护Docker、Docker-container两个进程,把传统的安装大量软件的模式转向系统中进程的创建模式,使系统进程稳定的运行来确保容器中软件的运行。通过Docker容器技术的发展使计算物理硬件资源更加充分的利用。

表1 传统方式和Docker方式对比

[1]Mabrook Al-Rakhami,Abdu Gumaei,Mohammed Alsahli,Mohammad Mehedi Hassan,Atif Alamri,Antonio Guerrieri,Giancarlo Fortino. A lightweight and cost effective edge intelligence architecture based on containerization technology[J]. World Wide Web: Internet and Web Information Systems,2020,23(1).

[2]杨清波,陈振宇,刘东,等.基于容器的调控云PaaS平台的设计与实现[J/OL].电网技术:1-10.

[3]王志伟,杨超.基于流量控制的Docker容器网络带宽控制机制[J].计算机用用,2019,39(12):3628-3632.

[4]赵旭,李艳梅,罗建,罗金梅.基于云预存储技术的Docker在线迁移方法[J/OL].自动化学报:1-11.

[5]王焱,吴青林.基于Docker和OpenStack的高校大数据云实验室构建[J].实验技术与管理,2019,36(09):254-258.

[6]杨凯琪,姚培,赵玉龙,汤凌韬.面向异构容器云的应用迁移方法[J].计算机工程,2019,45(08):42-47.

[7]张丽敏,高晶,李务斌,刘晨.微服务环境下容器编排可视化实践研究[J].计算机工程与科学,2019,41(08):1366-1373.

[8]王敏.基于Docker的数据科学虚拟化实验平台构建[J].实验室科学,2019,22(03):104-106+110.

[9]李慧春.基于Docker的HTTP服务器在实验室的应用[J].实验室研究与探索,2019,38(05):125-128+143.

[10]李慧春,王成喜,朱晓旭.基于Docker的Linux在线实验环境[J].实验技术与管理,2019,36(03):47-50.

[11]杨凯琪,赵玉龙,陈林.异构容器云间应用迁移模型研究[J/OL].计算机应用研究:1-7[2020-04-01].

[12]刘殊旸,张曼怡,曹强.Docker动态调度算法的设计与实现[J].计算机工程与科学,2018,40(12):2112-2119.

河南省教育科学“十三五”规划课题(2020YB0499);河南应用技术职业学院校级科技类项目(2019B-KJ-17)

猜你喜欢
虚拟化容器数据库
难以置信的事情
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
数据库
H3C CAS 云计算管理平台上虚拟化安全防护的实现
液体对容器底及容器对桌面的压力和压强
数据库
数据库
数据库
取米