APP下载

虚拟化及Docker轻量容器技术在高校图书馆中的应用*

2016-02-22陈军相李桂杰

图书馆研究与工作 2016年5期
关键词:管理程序轻量镜像

陈军相 李桂杰

(杭州电子科技大学图书馆 浙江杭州 310018)

虚拟化及Docker轻量容器技术在高校图书馆中的应用*

陈军相 李桂杰

(杭州电子科技大学图书馆 浙江杭州 310018)

以云计算技术的不断发展为切入点,介绍了Docker轻量容器技术的基本内容,进而介绍了高校图书馆数据管理过程中所采用的虚拟化技术的现状,并指出目前多数高校采用的完全虚拟化技术存在的问题。随后指出了Docker容器技术是如何来破解这些问题的。由于Docker是新兴的容器技术,所以依然存在很多需要完善的功能。最后,结合重量化虚拟技术以及Docker容器技术的发展现状,对Docker在高校图书馆中的应用作了发展展望。

Docker;虚拟化;图书馆应用管理;应用安全

1 引言

随着虚拟化技术的不断发展,云计算服务已经获得了快速的发展,并且在商业领域获得了非常广泛的应用。云计算服务目前可分为公有云、私有云、混合云。公有云构建在互联网之上,任何已付费的用户都可以访问[1]。国外有亚马逊云服务(Amazon Web Services)、谷歌应用程序引擎(Google App Engine)、微软的Azure。国内也有阿里云、腾讯云等云服务提供商等。私有云构建在局域网内部,私有云的可访问权限制在一定的范围内,可以为本地用户提供灵活的、敏捷的私有云基础设施[2]。云计算服务的发展极大地依赖于虚拟化技术,同时反过来促进了虚拟化技术的发展。虚拟化技术包括完全虚拟化技术、半虚拟化技术和容器技术。完全虚拟化技术是通过虚拟机监视器对底层的硬件资源进行管理,将单个物理主机分成若干个相互独立的部分,每个部分对应一台独立的虚拟机,虚拟机上运行独立的操作系统,从而有效利用主机的物理资源[3]。半虚拟化在完全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的应用程序接口,将客户操作系统发出的指令进行了优化。容器技术则为应用程序提供了隔离的运行空间,每个容器内都包含一个独享的用户空间,对容器的变动并不会影响其他容器的运行,也就是说,容器技术采用的是一种轻量化的虚拟化。Dock-er则是容器技术的最典型代表,它不依赖于任何操作系统、开发框架和程序语言,具有将应用程序及所需要的环境快速打包发布的能力。

2 虚拟化技术

2.1 完全虚拟化技术和半虚拟化

完全虚拟化技术又叫硬件辅助虚拟化,在虚拟机和宿主计算机之间加入了一个软件层Hypervisor,即虚拟机管理程序[4]。完全虚拟化技术可以追溯到20世纪六七十年代,IBM对大型机所进行的虚拟化研究。完全虚拟化技术由于云计算的快速发展而得到了广泛应用和发展。完全虚拟化的Hypervisor可以分为两种类型。第一种类型是Hypervisor直接运行在物理硬件之上,这种类型的虚拟机如KVM(Kernelbased Virtual Machine)。KVM本身就是一个基于操作系统的虚拟机管理程序。第二种是Hypervisor运行在另一个操作系统中,这种类型的虚拟机管理程序包括了QEMU和WINE。图1所示即是第二种类型的完全虚拟化的结构示意图。

图1 完全虚拟化示意图

宿主机操作系统运行在硬件资源之上,并且通过虚拟机管理程序,将硬件资源进行统一分配和管理,然后重新划分给各虚拟机。虚拟机操作系统的指令需要经过虚拟机管理程序的捕获,并被翻译成CPU能识别的指令格式。因此,虚拟机管理程序的负荷很大,会占用一定的资源。

半虚拟化是在完全虚拟化的基础上,对客户端操作系统进行了修改,增加了一个专门的API。该API对客户操作系统发来的指令进行了最优化,使虚拟机管理程序不需要耗费太多的资源进行翻译,因此,Hypervisor的工作负担变得非常小,那么整体的性能将有很大的提高。半虚拟化的缺点是需要修改包含API的操作系统。对于不包含该API的操作系统而言,就不能使用该方法。因为如Windows这样的操作系统由于版权政策等使得内核是没办法修改的。

2.2 容器技术

容器虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式,通过容器技术可以按需构建操作系统实例[5]。最为重要的是,容器技术可同时将操作系统镜像和应用程序加载到内存当中,同时容器技术还可以从网络磁盘中进行加载。目前容器虚拟化技术的典型代表是Mesos和Docker。Mesos主要利用操作系统本身的一些特性如cgroup、namespace等来实现对容器的隔离。Docker则主要使用Docker应用程序接口来进行容器管理。尤其是Docker的发展非常迅速,已经成为了一个产业标准。围绕Docker的生态圈已经形成,围绕Docker的很多开源项目正处于开发中,包括容器操作系统、系统监测、应用程序开发平台、开发工具、大数据、网络等。Docker容器虚拟化技术的基本结构如图2所示。

图2 Docker容器虚拟化示意图

3 虚拟化技术在高校图书馆数据管理中的应用现状

虚拟化技术在国内高校图书馆的应用出现快速增长的趋势,很多高校图书馆已经或正在进行服务器的虚拟化部署[6],即通过虚拟机管理程序对物理服务器进行整合统一管理,利用虚拟化软件进行软硬件资源的划分,分配给硬件之上的虚拟机,并进行资源优化与管理。在2013年的一项调查中,就12所已经在数字化过程中采取虚拟化技术的高校进行了统计,分别采用了Vmware Vshpere、Microsoft Hyper-V、Critix XenServer等VMM架构。虚拟机和物理主机的虚拟化比率都在3:1以上,三分之一被统计的高校图书馆的虚拟机和物理主机达到了5:1的虚拟化程度。

这些虚拟化技术在高校图书馆的应用给图书馆日常服务器的管理与维护带来了极大的方便。虚拟化平台的部署极大地减轻了管理和运营负担,降低了软硬件升级和老化的压力,提高了服务的可用性,使得运维人员可以通过VMware这样的虚拟机管理程序进行统一管理,进行虚拟机的创建、部署、删除等等操作。图3为某高校图书馆虚拟机管理软件VMware的管理界面。

图3 某高校VMware管理界面

但是利用Vmware等完全虚拟化技术依然面临着一些问题:如客户虚拟机采用共享的方式分享物理主机的资源,客户虚拟机操作系统占用资源的大小与物理PC机类似,因此其虚拟化率被限制在一定数量,否则客户虚拟机的响应速度会受到一定的影响,也就是说,其虚拟化率被限制在一定的范围内。

4 完全虚拟化技术在使用过程中存在的问题

通过VMware这样的虚拟化软件可以进行虚拟机的创建与删除,从而进行虚拟机的快照管理。但是完全虚拟化技术在日常运营管理过程中依然存在一定的问题,主要有以下几个方面:

(1)是一种重量化的虚拟化方式

一台虚拟机就和一台物理机一样,逻辑上有相应的虚拟硬件。如果一个应用单独放在一台虚拟机上运行,那么相应要划分给虚拟机完整的硬件资源,因此硬件利用率不高。如果多个应用运行在一台虚拟机上,存在多个应用共享同一个运行时环境。如果一个应用出现问题,对该应用的环境配置可能会影响其他应用的运行。

(2)数据的迁移不方便

虽然提供了虚拟机模板这样的方式来复制虚拟机和保存虚拟机的运行时环境,但数据的迁移通过这种方式也是一种重量化的操作。数据的运行环境的迁移难以跨平台操作。如在windows环境中的虚拟机难以迁移到linux环境中运行。

(3)虚拟机上的应用由于各种原因需要重新安装或升级时,需要重新开始进行应用环境的配置

如集群中的一台虚拟机安装了多种应用,由于木马等病毒的原因需要关闭虚拟机,然后重新开始配置虚拟机的运行时环境,那么采用完全虚拟化的方式需要重新创建一台虚拟机,重新配置环境,这个工作量有时侯很大。

以杭州电子科技大学图书馆为例,该馆将很多的图书馆业务系统放在基于网络开发访问的虚拟机中运行。2015年上半年通过网络中心的漏洞扫描,发现图书馆的随书光盘系统存在安全问题。多数高校图书馆都在使用的汇文图书管理软件,最近也是经常被报出存在安全漏洞问题,如汇文OPAC敏感信息泄露、汇文libsys图书管理系统SQL注入等安全问题。对于被病毒感染的虚拟机的操作就是删除,然后重新创建或从模板中部署,工作量也较大。

5 Docker轻量容器技术在图书馆应用探索

近年出现的容器技术充分利用操作系统本身已有的机制和特性来实现轻量级的虚拟化。Docker则是轻量容器技术的佼佼者。Docker是基于Go语言实现的云开源项目。通过Docker能高效地构建应用,能够通过Docker方便地创建运行在云平台上的应用;通过Docker容器技术,可以实现应用完全脱离底层机器,并且在“任何时间任何地点”都能获取到。假设在一个常用的应用场景中,一个用户试着以LAMP(Linux+Apache+MySQL+PHP)的方式来运行和维护一个网站,那么该用户必须要先安装Apache、MySQL、PHP以及各自依赖的环境,然后进行环境参数等的配置。配置完成,运行正常后,一旦需要服务器迁移,那么往往需要重新进行部署和调试。Docker则以另一种方式来进行,通过容器来打包应用,也就是应用的迁移只需在新的服务器上重新启动需要的容器即可。Docker容器的虚拟化方式如图4所示。

在Docker的虚拟化方式中,最下层是硬件基础设施,硬件基础设施之上是操作系统,操作系统上运行着Docker引擎,Docker引擎运行和管理着多个隔离的容器,每个容器中有各种应用的运行时环境,运行时环境上运行着各种应用。

图4 Docker容器的虚拟化方式

与容器技术相比,传统的虚拟机方式多了一层虚拟机操作系统的隔离。但这并不意味着Docker容器就不安全。Docker充分利用了Linux系统上的多种防护机制,实现了严格可靠的隔离。Docker具有启动速度更快、性能更接近原生系统、单机支持上千个容器等特点。那么如果能将图书馆的更多应用通过Docker容器进行发布,同时将容器制作成镜像进行管理,那么即使容器内的应用被病毒感染或程序崩溃,只需通过镜像管理就可以直接将容器进行恢复。因此,通过容器技术可以更快捷有效地进行图书馆应用程序的管理与维护。

尽管Docker有快捷、方便等优点,Docker容器技术依然存在一些问题:

(1)Docker是基于Linux操作系统的,目前没有办法进行Windows系统的镜像制作与管理。

(2)Docker镜像在与其他网络上的设备进行通信时,需要通过端口映射的方式将镜像端口与宿主操作系统的端口进行对应。

因此,综合考虑到高校图书馆服务器虚拟化已经有很多以Windows操作系统运行的完全虚拟化的虚拟机,采用Docker方式来完全替代原来的虚拟化方式是不现实的,也是没有必要的。

笔者认为,高校图书馆虚拟化方式可以向传统虚拟机方式与Docker容器技术结合的方式发展。在传统虚拟机VMware等软件进行硬件基础设施的虚拟化的基础上,然后在虚拟机操作系统中运行Docker引擎,再利用Docker容器技术分离出多个容器来运行各种图书馆的应用程序。虚拟化方式如图5所示。

图5 传统虚拟化方式与Docker结合

V传统的虚拟化方式与Docker轻量容器技术结合,在传统虚拟机上运行Docker,并在Docker引擎之上运行多个Docker容器。容器中运行相对独立的应用程序,这样就可以实现应用程序之间的隔离,同时实现各个应用的跨平台迁移。容器间的隔离可以有效避免应用程序之间的相互干扰,有效增强系统的安全性与稳定性。

那么这种基于传统虚拟化方式的Docker容器是如何实现的呢?以在其中一台虚拟机的一个容器中运行一个基于Apache2的网站为例,如在一台虚拟机上安装有Ubuntu 15.04,在这个系统中安装Docker,然后通过运行sudodocker pull ubuntu命令从DockerHub仓库下载一个最新的Ubuntu操作系统的镜像。然后通过运行如下图所示的命令来进入该容器。通过该命令,将把cjx-virtual-machine这台虚拟机的81端口映射到容器中的80端口。

通过这样的方式,网站的代码运行在虚拟机操作系统cjx-virtual-machine中,通过端口的映射后,使外网可以访问该网站。在网站系统及应用的开发过程中,添加数据库等功能后,就可使每个容器单独运行在一个容器中。然后就可以通过创建镜像来打包容器,并放到镜像仓库中。因此可使网站具有跨平台的可迁移性,并且网站代码及配置环境与其他网站或应用相隔离。由于每个镜像所占的容量都较小,一台虚拟机上可以运行很多个容器,所以,通过这样的方式,可以有效地将应用隔离开来。

图6 访问容器中的网站

6 结语

目前,越来越多的基于互联网的高校图书馆应用时不时会面临安全问题,高校图书馆的业务系统也不例外。如果多个应用程序运行在同一台电脑或虚拟机上,多个应用程序的运行环境互相重叠,一个软件应用出现安全问题,需要重新配置环境等,势必会对其他软件应用产生影响。因此,通过单独的软件应用运行在单独的容器中,其软硬件的资源代价是相对较少的,并且通过这样的方式可以提高软件的可移植性。

随着linux的发展及轻量虚拟化技术的发展,类似Docker的轻量容器技术将会得到广泛的应用。结合目前多数高校图书馆的软硬件现状,以及最新的容器技术的特点,笔者认为,在传统虚拟机的基础上使用Docker等轻量化的容器技术来运行图书馆业务系统应用,必将提高图书馆系统的安全性及系统的可移植性。

[1]孔楠.基于云计算平台的商业服务模式研究[D].上海:上海外国语大学,2010.

[2]李辉.基于OpenStack的私有云计算平台的研究和实现[D].南昌:江西师范大学,2013.

[3]刘熙,胡志勇.基于Docker容器的Web集群设计与实现[J].电子设计工程,2016(8):117-119.

[4]崔征.虚拟化技术在高校数据中心的应用[J].河北公安警察职业学院学报,2013(2):67-70.

[5]马越,黄刚.基于Docker的应用软件虚拟化研究[J].软件,2015(3):10-14.

[6]张蓓.虚拟化技术在高校图书馆数字化中的应用[D].西安:西安工业大学,2013.

On Application of Virtualization and Docker in Data Management of University Libraries

This paper introduces the continuous development of cloud computing and the Docker container technology.Then it talks about the current state of virtualization technologies applied in data management of university libraries,and points out main problems of full virtualization technologies that are used by most universities.After that,this paper explains how Docker solves these problems.Also,this paper admits that Docker is a newly developed lightweight container technology,and has many functions yet to be improved.At last,this paper expresses expectations for use of Docker technology in university libraries.

Docker;virtualization;library application management;application security

G258.6;TP308

A

陈军相(1980—),男,杭州电子科技大学工程师;李桂杰(1967—),女,杭州电子科技大学副教授。

2016-09-28

★本文系浙江省教育厅项目“高校图书馆移动参考咨询系统的模型设计与实现研究”(项目编号:Y201533083)的成果之一。

猜你喜欢

管理程序轻量镜像
军事保密管理程序法治化及其对军民协同创新发展的促进研究
镜像
轻量新能源汽车应用开关磁阻电机系统匹配的研究
我对轻量型并继竿的看法
镜像
网络数据库安全检测与管理程序的设计实现研究
浅谈核电工程电气工程质量和安全的精细化管理
镜像
外出的最“重量”武器是最“轻量”化妆包
降低车用发动机燃油耗的高强度轻量气门弹簧