基于Docker的Web应用部署与实现

2021-09-19 10:14孙雅妮
中阿科技论坛(中英文) 2021年9期
关键词:镜像命令虚拟化

孙雅妮

(四川信息职业技术学院,四川 广元 628040)

1 概述

当前的Web应用多采用LAMP架构,LAMP架构通常包括Linux操作系统、Apache、MariaDB和PHP。服务器处理一次Web页面请求的过程是由Apache接收请求,通过CGI接口访问PHP的应用程序,然后由PHP应用程序调用PHP解释器执行PHP代码,接下来由PHP程序访问调用数据库,最后将结果反馈给Web页面。

实现LAMP架构的传统做法是将服务器资源进行虚拟化,基于虚拟化资源池创建虚拟机,在虚拟机上部署Web和数据库服务。传统的虚拟机技术与Docker相比,前者明显占用了较多的系统资源,而Docker在启动速度、信息隔离和资源消耗方面的优势十分明显[1-2]。本文提出一种基于容器实现LAMP,采用在Docker中基于LAMP架构部署Web应用,提升Web应用的部署效率,降低物理资源消耗。

2 Docker简介

根据官方定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行环境,是为开发者和系统管理员设计的,是一个用于构建、发布和运行分布式应用的平台[3]。它是一个开源的容器引擎,可以方便地对容器进行管理,或者说Docker是一个开源的轻量级虚拟化容器管理引擎。它由Docker Inc.公司(前dotC1oud公司,PaaS市场中的老牌提供商)的团队编写、发行,并将其源代码放在GitHub上。Docker基于Go语言开发并遵从Apache2.0协议[4]。

Docker提出的“Build,Ship and Run Any APP,Anywhere”就是Docker最具竞争力的优势。它通过将运行环境和应用程序打包到一起,解决部署应用对环境依赖的问题,真正做到快平台的分发和使用[5]。Docker是容器化技术的一种实现,它与传统的虚拟机架构有所不同。两种架构对比如图1所示。

图1 容器和传统虚拟机架构对比

从对比图1可以看出,传统虚拟机架构中每一个VM都会运行一个完整的Guest OS,多个服务的部署需要多台VM。容器省略了操作系统,整个层级更简化,可以在单个Host OS上运行多个应用,共用宿主机的操作系统和运行时库[6]。Docker技术的应用优势主要在于简化部署、虚拟高效化、微服务化以及易于迁移和扩展四个方面[7]。

3 基于Docker的Web应用部署与实现

3.1 Web应用介绍

本文要部署的Web应用是云计算虚拟仿真实训平台,该实训平台是基于LAMP(Linux+Apache+MariaDB+PHP)实现的,其中Linux采用CentOS 7以上系统。

基于Docker搭建云计算虚拟仿真实训平台需要首先在CentOS 7宿主机上安装Docker Engine完成容器环境的部署,其次部署数据库容器和Web容器,然后配置Web容器能够访问数据库容器,最后部署和发布云计算虚拟仿真实训平台这个Web应用。基于Docker的Web应用架构如图2所示。

图2 基于Docker的Web应用架构图

3.2 环境准备

安装一台Host主机,本文中Host主机选用CentOS 7.4操作系统;配置此主机的网络,使得能够连通互联网。

3.2.1 Docker安装

配置Docker的yum源,并且查看所有仓库中所有Docker版本,选择社区版安装,执行以下命令。

安装并启动Docker,完成后查看Docker版本,执行以下命令。

3.2.2 配置Docker镜像加速器

默认情况下,Docker从Docker Hub上下载镜像,但国内访问Docker Hub的速度很不稳定,有时甚至出现连接不上的情况。文中为Docker配置网易镜像加速器,从而解决镜像下载慢的问题。网易镜像加速器的配置是创建或修改/etc/docker/daemon.json文件,文件内容修改如下:

daemon.json文件修改完成后,需要重新启动Docker。

3.3 基于CentOS镜像部署数据库

(1)先从Docker Hub中拉取CentOS镜像,再创建数据库容器的数据卷mysqldata,并基于CentOS镜像创建数据库容器,执行以下命令,结果如图3所示。

图3 创建数据库容器

(2)由图3可知,数据库容器缩略编号为b56ac22b6c62,进入容器安装、配置及初始化数据库执行以下命令。

(3)创建数据库及数据库用户,数据库名为yun,结果如图4所示。

图4 创建数据库和数据库用户

3.4 基于CentOS镜像部署Web服务器

(1)创建Web容器的数据卷webdatadata,并基于CentOS镜像运行容器,执行以下命令,结果如图5所示。

图5 创建Web容器

(2)从图5可知,Web容器缩略编号为elec087e0fb,进入容器安装并且开启HTTP服务,测试Web服务是否正常运行执行以下命令。

3.5 部署和发布Web应用

(1)将Web应用压缩包yun.zip拷贝至数据卷webdata中并解压,进入Web容器,安装PHP执行以下命令。

(2)在Web容器中配置连接数据库文件conn.php,文件内容如下。

(3)在数据库容器中上传并导入数据库文件,执行以下命令。

(4)在与Host主机网络连通的任何一台主机的浏览器中输入Host的IP地址进行测试,论文中使用的IP地址为192.168.59.153。登录http://192.168.59.153/yun/login.html,如图6所示。

从图6可以看出,Web应用发布成功。值得注意的是,因为创建Web容器时将容器的80端口映射到了Host主机的80端口,所以访问Host主机就相当于访问Web容器的Web应用。

图6 Web应用发布测试

4 结语

利用Docker来部署LAMP和利用传统虚拟机来部署LAMP相比,容器启动服务的速度更快,而且容器相对虚拟机更轻量级,单个Host主机可以运行多个容器,而传统虚拟机一般一个虚拟机部署单个服务,无法扩展性能,并且容器的虚拟化性能接近于原生。

猜你喜欢
镜像命令虚拟化
只听主人的命令
镜像
基于OpenStack虚拟化网络管理平台的设计与实现
镜像
对基于Docker的虚拟化技术的几点探讨
移防命令下达后
H3C CAS 云计算管理平台上虚拟化安全防护的实现
这是人民的命令
存储虚拟化还有优势吗?
镜像