基于Docker的旧机房虚拟化改造探讨

时间:2022-08-15 12:38:12

基于Docker的旧机房虚拟化改造探讨

摘 要:Docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的容器中,然后到任何流行的Linux机器上,也可以实现虚拟化。由于Docker和VNC的客户端软件都是开源的产品,这样就节省了初期购买虚拟化软件的费用。在一台服务器上搭建好Docker的环境,其余电脑通过VNC客户端来访问服务器上的虚拟化应用。

关键词:Docker;虚拟化;容器

近年来,随着计算机硬件配置的提升和虚拟化技术的普及,越来越多的院校在新建计算机房时都考虑使用虚拟化云桌面技术,在新机房部署云桌面有诸多优点:定制桌面软件环境方便;简化服务器的部署、管理和维护工作,降低管理费用;提高服务器资源的利用率;提高服务器计算能力;在不中断用户工作的情况下进行系统更新;支持快速转移和复制虚拟服务器,提供一种简单便捷的灾难恢复解决方案等。但对于现有旧机房的改造来说,完全废弃旧有电脑全部更新为瘦客户机云桌面模式或采用在旧电脑上运行虚拟化的桌面都有一些的不足。

不论采用哪种方式,桌面虚拟化的初始成本较高。降低成本是很多人对桌面虚拟化所带来好处的第一反应,不过这成本需要具体的分析。桌面虚拟化并不是免费的,初始成本并不低,要进行基础架构的改造,要额外的付出桌面虚拟化的相关软件和许可费用,而操作系统的授权还一个不能少,应用软件也是根据虚拟桌面数量来授权的,这方面与物理桌面没有什么区别。对一间配置较低的旧电脑机房进行桌面虚拟化改造,其软件成本并不比新建一间机房低多少,对于一些只跑一些轻量化应用的机房来说,这种改造显得成本较高。

1 Docker技术

Docker是一个高级容器引擎,Docker的核心是LXC,它在LXC之上做了进一步封装,重点提高了标准化和可移植性,基于go语言开发,并且遵循了Apache2.0协议开源规范。LXC技术是一种轻量级的虚拟化技术,它可以在单个宿主机操作系统上同时运行多个Linux系统,在隔离方面,使用cgroups技术来实现处理器、硬盘、内存、网络等设备的隔离。

2 Docker与传统虚拟化技术的区别

Docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的容器中,然后到任何流行的Linux机器上,也可以实现虚拟化。通俗地说,一个做好的应用容器长得就好像一个装好了一组特定应用的虚拟机一样。例如当你需要使用MySQL环境时,只需装好MySQL的容器,运行起来,就可以使用 MySQL了。容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。通常Docker容器的启动速度都能达到在1秒内启动,而VM往往需要较久的启动时间;Docker占用的资源很少,1台普通性能的服务器能够跑成百上千个容器,这也是VM较难达到的。

3 通过Docker构建轻量化应用机房

某院校电子阅览室电脑已使用近5年,平时主要用于学生上网访问数字资源使用,随着浏览器等软件的硬件资源占用加大,目前的电脑配置运行起来比较缓慢,已无法满足使用需求。由于应用的需求比较单一,如果采用虚拟化云桌面的方案进行升级改造,需要购置服务器及VM软件等,前期投入较大,对于轻量化应用来说性价比不高。尝试使用Dcoker容器封装浏览器等应用镜像,配合VNC远程访问应用。

目前Linux上比较主流的图形界面服务是X11,而X11服务的图形显示方式实际上是一种C/S模式,在服务端和客户端之间,X11通过(DISPLAY)环境变量来指定将图形显示到何处。基于这个原理,将Docker中的GUI程序显示到外面,就是通过某种方式把X11的客户端的内容从容器里面传递出来。X11服务默认只允许来自本地的用户启动的图形程序将图形显示在当前屏幕上,需要进行修改允许所有用户访问X11服务。

VNC (Virtual Network Console)是虚拟网络控制台的缩写。由著名的AT&T的欧洲研究实验室开发。VNC是在基于UNIX和Linux操作系统的免费的开源软件,远程控制性能强大,高效实用,其性能能与Windows和MAC远程控制软件媲美。

由于Docker和VNC的客户端软件都是开源的产品,这样就节省了初期购买虚拟化软件的费用。在一台服务器上搭建好Docker的环境,其余电脑通过VNC客户端来访问服务器上的虚拟化应用。

实验中以ubuntu系统容器化作为测试,在服务器上搭建ubuntu的Docker,让10台旧的配置不高的电脑访问。首先构建ubuntu镜像容器,往容器里面安装用户自己的应用软件。镜像中的程序可以是从代码编译的、从网上下载的、或者直接通过apt-get安装的。安装好后,只需要要将需要运行的GUI软件启动命令设置到“APP_START”变量中就可以了。Docker镜像的创建有两种,一是使用docker commit命令,二是使用dockerfile文件和docker build命令来创建。以chrome浏览器为例,构建chrome镜像后,加上标签,然后启动一个容器实例,并将它映射到外部的端口,客户机电脑通过VNC软件连接这个地址端口,就可以访问chrome浏览器了,不同的客户机通过连接不同的端口来访问不同的容器,互不干扰。

由于所有配置的操作都在服务器电脑上完成,就省去了部分在客户机上安装软件等的维护工作,便于管理员管理。同时,由于Docker有启动速度快的优势,在配置较低的客户机上通过VNC连接容器,启动chrome的速度比在本机上直接运行chrome程序更快,缓解了客户机电脑配置不足的压力。在内存占用上,由于容器的轻量化,对服务器的内存需求很低,在服务器上可以运行更多的容器,节约了在服务器硬件配置上的投入。在安全性上,Docker中部分目录下的资源是与宿主机共用的,而且多个容器与宿主机共用同一个内核,所以Docker的隔离程度不如VM等虚拟化方式;Docker通过内核的namespace,包括进程、网络、进程间通信信号、文件系统、用户等,不同的Docker使用不同的namespace,在安全性上面已经得到很大的提升。综上所述,基于Docker构建的虚拟化能满足一些轻量化应用机房的需求。

4 结束语

经过测试,作为一种新的虚拟化技术,Docker以其极小的性能损耗、快速的启动速度和优秀的可移植性在很多场合显现出了相对传统虚拟机技术的优势。当然,其还存在较多局限性,如只能拟linux下的应用,对Windows下的应用支持不好,可用的应用较少等,相信随着Docker技术的不断发展,在应用本身越来越成为市场核心的将来,Docker的应用将越发广泛。

上一篇:把“开学式”办得有特色 下一篇:斜辊钢管矫直过程的数值模拟与接触状态分析