《基于Docker的云计算快速开发测试架构.doc》由会员分享,可在线阅读,更多相关《基于Docker的云计算快速开发测试架构.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Docker的云计算快速开发测试架构 中国邮政集团公司山东省信息技术局 马岩一、 概述随着山东邮政业务转型的深入和业务种类的多样化发展,迫切需要邮政IT部门的支撑和引领作用,特别是在当前业务发展迅速,各业务功能开发和上线频繁的情况下,对我们的系统开发能力提出了更高的要求,而现有的开发测试环境存在资源利用效率低,测试版本管理复杂,迁移成本高等诸多缺点。以Docker为代表的容器云计算技术自去年起逐步成长起来,容器技术以它轻量,快速,隔离的优势,迅速在IT学术界和企业界引起了广泛的关注。 本文在概述Docker容器核心技术理念基础上,着重介绍了我们利用Docker容器云计算技术优化系统开发过程
2、的思路,并搭建了一个以docker技术为基础的开发测试框架.该框架有效整合了开发和测试环境,显著提高了我们开发测试的速度和质量,使我们能更好的服务于业务的发展。二、 Docker容器云计算技术2。1 Docker核心技术 Docker是以Linux的cgroup、namespace等容器技术为基础的开源容器引擎,目前已经获得包括微软,Google,红旗等主流IT厂商的支持.Docker利用轻量级的虚拟化技术,有效的封装了操作系统底层的隔离,进程独立等功能,实现了各种依赖环境和应用的打包,方便了项目的开发测试和部署过程。Docker与传统虚拟机技术的对比:传统的虚拟化技术例如vmware公司的v
3、sphere目标是建立一个从硬件到软件模拟化的虚拟机,具有整套的操作系统环境,而Docker技术则是基于操作系统的底层容器API,他没有模拟完整的操作系统环境,从进程上看,docker虚拟机里只有应用的进程而没有其他的操作系统进程,它将项目的源码,依赖和环境配置打包成一个隔离独立的运行环境,所以它具有快速轻量的特点.2.2 Docker解决的主要问题 2.2。1 减轻虚拟化的成本 传统的虚拟机技术要安装操作系统后才能使用,而操作系统本身会占用大量的系统资源,是一种极大的浪费。而Docker容器不需要操作系统安装也能运行,在提供了进程隔离的同时,为应用的运行提供了有效的运行环境。 2。2.2 应
4、用的快速运行和部署 Docker独有的镜像技术,使各种环境依赖和应用打包后形成镜像存储在Docker仓库中,当需要部署运行的时候,只要从仓库获取运行镜像即可得到相应的功能,docker将复杂的部署过程,简化为复制加运行,不需要中间多余的工作。 2。2.3 资源的有效度量 Docker利用操作系统的容器API可以对cpu,网络,内存等各种资源进行有效的定制和度量,减少了单个应用死循环对其他应用的影响。 2。2.4 复杂环境依赖的有效隔离 应用的运行环境需要多种第三方插件和运行中间件的支持,这给应用的开发测试带来了很大的复杂性,往往新环境的搭建要耗费大量的时间和精力。Docker通过将多种依赖库和
5、中间件打包成镜像的方法,有效减轻了环境搭建和移植的复杂性,同时Docker支持镜像的叠加,容器的网络等功能,从而进一步简化了环境构建的工作。2。3 Docker的主要部件 Docker主要部件包括Docker客户端,docker后台进程,docker镜像仓库和docker容器进程四个部分。2。3。1 Docker客户端 用户通过Docker客户端与docker后台守护进程进行通讯,通过Docker客户端命令行工具,发起对Docker各种功能的操作指令。Docker通讯支持tcp,unixsocket等多种通讯方式。2.3.2 Docker后台守护进程 Docker后台守护进程包含两个模块,Do
6、cker服务和Docker引擎。Docker服务接受来自Docker客户端发送的命令,并交由Docker引擎中相应的处理程序进行处理。Docker引擎是实际完成工作的核心进程。2。3。3 Docker仓库Docker仓库用于存放Docker镜像。镜像类似虚拟机的快照概念,是Docker容器运行的代码基础。Docker仓库可以使用公有仓库DockerHub,也可以搭建企业内部的私有仓库.2.3.4 DockerFile 构建文件 DockerFile描述了一个完整的镜像的构建过程,包括依赖软件和中间件的安装,目录,环境变量,暴露端口,端口映射等. 三、 基于Docker容器的云计算快速开发测试框
7、架3.1 现有开发测试环境及存在的问题 下图是一个开发测试和部署的过程,传统的开发测试过程存在如下几个问题:1、资源利用效率低2、单物理机多应用无法有效隔离(进程空间,cpu资源,磁盘)3、运维部署不便4、测试、版本管理复杂5、迁移成本高6、传统虚拟机,空间占用大,启动慢,管理复杂一个IT系统应该包含如下几个层次:应用程序运行时平台(bin/framework/lib)操作系统硬件(基础设施)开发人员的主要工作是应用程序的编码、构建、测试和发布,涉及应用程序和运行时平台这两层.而运维人员的工作则涉及从硬件、操作系统到运行时平台的安装、配置、运行监控、升级和优化等工作。docker提供了一种运行
8、时环境,隔离了上层应用于下层操作系统和硬件的关联,使得术业有专攻。3.2 Docker容器的云计算快速开发测试框架框架流程图如下:如上图所示,通过创建镜像仓库群,开发用户从仓库获取标准镜像,进行开发测试,完成后将结果镜像保存在Docker镜像仓库中,测试机从仓库中获取开发完成的镜像,并进行验证测试,测试通过后,生产环境可以获取最新的镜像进行部署,同时对原有镜像进行备份处理。3。2.1 框架部署结构图 框架部署图如下所示: 我们通过vmware公司的vsphere软件建立虚拟化集群,在虚拟化集群服务中建立云端Docker仓库服务器,测试机和生产服务器,开发人员通过网络连接Docker镜像仓库,下
9、载需要开发的环境镜像文件,同时可以根据生产备份和测试备份,直接获取生产版本或者测试版本,开发后在生产环境进行部署。3.3 关键技术及过程 1、 容器创建 容器的创建过程类似于快照中创建虚拟机,可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序.容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台. 如上图所示,我们从#0号镜像创建了tomcat容器 2、 端口映射 端口映射功能提供了一种容器之间通讯的一种手段,如下图所示: 容器myapp1 将内部的80端口映射成8080端口
10、对外提供服务 3、 数据卷共享 数据卷是一个可供一个或多个容器使用的特殊目录,完成进程和数据的分离,实际保存在容器之外,从而允许你在不影响数据的情况下销毁、重建、修改、丢弃容器,可用于数据持久化。数据卷的使用,类似于 Linux 下对目录或文件进行 mount。数据卷的共享, 可以在多个容器之间共享数据卷 上图中深绿色表示数据卷以及数据卷在各容器之间的共享 4、 链接容器 容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息,Docker 在两个互联的容器之间创建了一个安全隧道,而且不用映射它们的端口到
11、宿主主机上。从而避免了暴露关键系统(如数据库)端口到外部网络上。 如上图所示,web容器与myapp_db容器之间通过链接方式将数据库的端口开放给web应用. 5、 仓库创建及注册 仓库是集中存放镜像文件的场所,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签,仓库分为公开仓库(Public)和私有仓库(Private)两种形式,可以push 镜像到仓库或者从仓库pull下镜像。四、 总结创新点与成效 比较传统的开发测试流程和以docker为基础的开发测试框架,提出了三处创新:1、 简化了环境搭建的步骤 以往开发环境的搭建,需要自己安装操作系统,安装各种中间
12、件软件和依赖库,采用docker容器后,我们需要的仅仅是复制运行,中间环节全部去除,并且保证了各个开发人员环境的一致性。2、 提高了资源利用效率 为了减少各个应用之间互相影响,业务测试都需要一台独立的物理主机或者虚拟机进行测试,,采用docker技术后,各个应用可以共用一台主机,由于进程,内存,cpu,网络等资源的隔离,应用之间的影响降为最低。3、 降低了迁移成本 旧开发模式下,完成的代码要上线到生产环境,需要在生产环境安装需要的依赖软件和库文件,采用docker技术后,我们只需要将开发完成的镜像文件放到生产环境中运行即可,因为镜像本身就带有自己的依赖文件和环境参数,不需要运维人员进行修改和调整。 基于Docker云计算的开发测试环境的应用成效:采用该框架后,我们的开发测试工作中的环境搭建任务大为减轻,开发质量和交付速度显著提高,有效支撑了业务的发展