部署应用程序运行环境的方法、装置及系统的制作方法_2

文档序号:9730005阅读:来源:国知局
运行环境通用于客户端侧的任何操作系统,无需针对客户端的操作系统部署特定版本的运行环境,由此能够大大提高运行环境的部署效率。
[0051]进一步的,本发明实施例还提供了一种部署应用程序运行环境的方法,该方法应用于客户端一侧,如图2所示,该方法包括:
[0052 ] 201、接收服务端发送的容器文件。
[0053]客户端侧预先安装有容器引擎程序,该程序用于建立进程容器加载服务端发送的运行环境。由于运行环境是在容器中运行的,因此不受客户端操作系统限制。
[0054]实际应用中,容器引擎程序的版本应当与客户端操作系统的版本相适应,以使得客户端操作系统的配置能够正常运行容器引擎程序。
[0055]客户端接收服务端发送的tar格式的容器文件,该容器文件中包含服务端基于自身操作系统开发的目标应用程序的运行环境安装包,该运行环境为对应服务端操作系统的运行环境。即服务端基于自身操作系统开发目标应用程序,并将该目标应用程序在服务端操作系统中的运行环境添加到容器文件中发送给客户端。
[0056]本实施例中,容器文件中的运行环境的版本与服务端操作系统相对应,实际应用中,当容器文件中添加有对应其他操作系统的运行环境时,客户端也可以通过图2所示流程成功运行之。
[0057]202、启动容器引擎程序。
[0058]实际应用中,可以由网络管理员或用户选择时机手动启动容器引擎程序,也可以由客户端在接收到镜像容器文件后自动启动容器引擎程序。对于后者方式,服务端可以在发送镜像容器文件的同时向客户端发送启动容器引擎程序的指令,或者客户端在接收到镜像容器文件自动启动容器引擎程序。
[0059]203、运行容器文件,在客户端的操作系统中加载运行环境。
[0060]客户端启动容器引擎程序,建立进程容器。然后运行服务端发送的容器文件,在本地运行服务端侧的运行环境。
[0061]本发明实施例提供的部署应用程序运行环境的方法,能够由服务端获取基于自身的操作系统开发目标应用程序,并将目标应用程序的运行环境添加到容器文件中,该运行环境为对应服务端操作系统的运行环境;然后将容器文件发送给客户端。客户端在接收到容器文件后启动容器引擎程序,运行容器文件,在客户端的操作系统中加载运行环境。本发明实施例能够通过容器技术在客户端侧直接加载目标应用程序的运行环境,加载过程无需区分操作系统,无论该运行环境是基于何种操作系统开发的,也无论客户端使用何种操作系统,均能够在客户端侧成功加载运行环境。与现有技术相比,本发明实施例可以使服务端侧的运行环境通用于客户端侧的任何操作系统,无需针对客户端的操作系统部署特定版本的运行环境,由此能够大大提高运行环境的部署效率。
[0062]进一步的,作为对图1及图2所示方法的细化,本发明还提供了一种部署应用程序运行环境的方法,该方法涉及服务端及客户端两侧。如图3所示,该方法包括:
[0063]301、服务端获取目标应用程序。
[0064]本步骤的实现方式与图1步骤101的实现方式相同,此处不再赘述。
[0065]302、服务端在容器脚本中添加命令行语句。
[0066]容器脚本部署在服务端一侧,用于将运行环境添加到容器文件中。容器脚本中添加有编辑有命令行语句,该命令行语句包括运行环境的配置参数,通过执行命令行语句可以将运行环境添加到容器文件中。
[0067]实际应用中,命令行语句可以添加到容器脚本的结尾处,服务端可以根据外部的配置需求自动添加不同运行环境的命令行语句,也可以为网络管理员提供编辑命令行语句的交互界面,接收网络管理员手动输入的命令行语句。
[0068]本实施例中,不同版本的容器引擎程序对应的命令行语句在格式结构上有所不同,服务端需要根据客户端侧容器引擎程序的版本添加对应格式的命令行语句。
[0069]在本实施例的一种实现方式中,服务端一侧可以部署一个配置文件,该配置文件中记录有客户端标识与容器引擎程序版本号的对应关系。在写入命令行语句时,服务端根据查找该配置文件获知客户端侧部署的容器引擎程序的版本号,然后将与该版本号对应的命令行语句写入到容器脚本中。此外,服务端还可以通过接收心跳包的方式获取客户端一侧最新的容器引擎程序的版本号,并以此对配置文件进行更新。
[0070]当网络中不同客户端的容器引擎程序的版本不同时,为便于一次性写入命令行语句,减少服务端资源开销,服务端还可以在配置文件中查找最新的版本号,并通知所有版本号低于此最新版本号的客户端更新容器引擎程序的版本。必要时服务端还可以为客户端提供最新版本的容器引擎程序更新包。
[0071]303、服务端执行容器脚本中的命令行语句,根据配置参数查找运行环境。
[0072]304、服务端生成运行环境的镜像容器文件。
[0073]本实施例中,命令行语句中的变量值为运行环境的配置参数,不同操作系统的运行环境的配置参数各有差异。通过配置参数可以查找获得需要发送给客户端的运行环境。
[0074]实际应用中,运行环境的配置参数包括但不限于对如下参数进行定量限制:操作系统版本(WindowsXPJista等),CPU性能(例如CPU核数),显卡型号,声卡型号,最小内存要求,最小磁盘要求。
[0075]如前所述,运行环境是以运行环境安装包的形式存在于服务端一侧,在本实施例的另一种实现方式中,命令行语句中也可以记录运行环境安装包的名称、存储路径等信息,用以唯一标识一个运行环境安装包。
[0076]除了配置参数外,命令行语句中还包括有生成镜像文件的命令语句,通过执行该命令语句,服务端生成运行环境的镜像容器文件。
[0077]305、服务端将镜像容器文件发送给客户端。
[0078]与镜像容器文件一同发送的还包括容器脚本。
[0079]306、客户端接收服务端发送的运行环境的镜像容器文件。
[0080]307、客户端启动容器引擎程序。
[0081]在执行镜像容器文件之前,客户端首先需要启动容器引擎程序。实际应用中,可以由网络管理员或用户选择时机手动启动容器引擎程序,也可以由客户端在接收到镜像容器文件后自动启动容器引擎程序。对于后者方式,服务端可以在发送镜像容器文件的同时向客户端发送启动容器引擎程序的指令,或者客户端在接收到镜像容器文件自动启动容器引擎程序。
[0082]本实施例中,容器引擎程序本质上通过实现一种操作系统级的虚拟化方式实现运行环境的加载。这种方式对系统底层的资源和命名空间进行了封装。在生成进程容器之前,客户端需要调用封装的底层接口为进程容器分配运行资源,所述资源包括但不限于是内存空间、磁盘空间、CPU处理线程。
[0083]实际应用中,容器引擎程序对底层的资源进行了权限控制方法的封装以及资源控制方法的封装,通过调用这两类方法的接口可以为进程容器分配运行资源。本实施例中,容器脚本中的命令行语句中写有为进程容器分配资源的配置参数。容器引擎程序执行该命令语句,按照该配置参数为进程容器分配资源。
[0084]此外,当容器脚本中的命令行语句中没有记录为进程容器分配资源的配置参数时,容器引擎程序也可以根据本地配置的默认参数为进程容器分配资源。
[0085]308、客户端根据镜像容器文件启动虚拟环境。
[0086]在分配资源后,客户端运行镜像容器文件,为镜像容器文件启动一个虚拟环境。如前所述,该虚拟环境是一种操作系统级的虚拟环境。与JAVA虚拟机相比,该虚拟环境由于是基于Linux容器的轻量化虚拟环境,未像JAVA虚拟机一样真正对物理机的硬件资源进行隔离分配,因此具有启动快、资源占用小的特点。
[0087]容器引擎程序使用LXC启动一个Linux类型的进程容器,不同的进程容器拥有自己独立的命名空间,包括:PID进程,丽T文件系统,NET网络,IPC,UTS主机名等。本实施例中,容器引擎程序是LXC的一个高级封装,提供了各种辅助工具和标准接口以便使用LXC。实际使用中,一般无需关心底层LXC的细节。
[0088]309、客户端执行容器脚本中的命令行语句,在进程容器中加载运行环境。
[0089]本实施例中所述的命令行语句格式具体可以是CMD格式语句,本实施例对此不作限制。
[0090]在运行时,容器引擎程序启动一个程序执行该容器脚本,在虚拟环境下将镜像容器文件加载到进程容器中,完成运行环境的部署。本实施例中,命令行语句还可以规定使用哪个进程容器加载运行环境,通过命令行语句的执行,建立进程容器加载运行环境。
[0091]进一步的,为了加快运行速度,减少内存和磁盘占用,容器引擎程序还可以进行image重用。进程容器运行时所构造的运行环境,可以由具有依赖关系的多个Layer组成。例如,apache的运行环境可能是在基础的rootfs image的基础上,叠加了包含例如Emacs等各种工具的image,再叠加包含apache及其相关依赖library的image,这些image由AUFS文件系统加载合并到统一路径中,以只读的方式存在,最后再叠加加载一层可写的空白的Layer用作记录对当前运行环境所作的修改。
[0092]下面给出本实施例的一个应用场景:
[0093]在本应用场景中,基于Linux操作系统的服务端需要将NEGIX、PHP两个应用部署到客户端上,服务端拥有两个应用的Linux运行环境。服务端将两个应用的命令行语句写入到容器脚本中,生成NEGIX和PHP的镜像容器文件,并将两个镜像容器文件发送给基于Redhat操作系统的客户端。
[0094]客户端接收到镜像容器文件及容器脚本后,启动容器引擎程序,通过执行容器脚本中的命令行语句完成两个应用的运行环境部署。
[0095]此外,在本应用场景中,服务端也
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1