一种应用容器的启动方法及系统与流程

文档序号:11829135阅读:298来源:国知局
一种应用容器的启动方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种应用容器的启动方法及系统。



背景技术:

近年来,随着计算机技术的不断发展,以Docker为代表的应用容器技术作为轻量级虚拟化技术,广泛应用于云计算、安全、智能操作系统等领域。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的应用容器中,然后发布到任何流行的Linux机器上。Docker应用容器可以为应用提供一个虚拟化的运行环境,各个应用容器之间完全隔离,相互之间不会有任何接口,而且几乎没有性能开销,可以很容易地在主机上运行。

应用容器热迁移技术,如CRIU技术,可以将应用容器及应用容器中运行的应用冻结,并将应用容器状态及所使用的资源保存到检查点数据文件中,写入到硬盘上,之后可以在同一个或不同的主机上的应用容器中恢复出原来的应用,继续从冻结之前的状态开始运行,应用容器热迁移技术与现有的一些应用容器迁移方法如docker的export和save方法相比,不同点在于docker export导出应用容器会丢失历史记录和元数据,而docker save只能用于迁移应用容器的镜像而不能用于迁移单个应用容器。只有应用容器热迁移技术如CRIU能够在迁移的时候保存应用容器的状态,恢复应用容器的时候继续从冻结之前的状态开始运行。

目前,对于运行某些应用的应用容器来说,启动的时候需要向内存中写入大量数据,初始化时间非常长,整个启动过程需要耗费大量的时间,而且每次启动的时候都要重复这一过程,使得用户每次启动应用容器后都要要等待很久,大大降低了用户体验。



技术实现要素:

本发明的目的在于,提供一种应用容器的启动方法及系统,它利用应用容器热迁移技术,将应用容器启动过程由直接启动应用容器改变为从应用容器检查点恢复已经初始化完毕的状态,加速了应用容器启动的过程,大大提升了用户体验。

为了实现上述目的,一方面,本发明提供了一种应用容器的启动方法,该方法包括以下步骤:

创建应用运行所需应用容器,并配置运行环境,以及在应用容器中安装运行所需应用。

在存储器上创建保存检查点数据文件的目录,检查点数据文件用于存储应用容器和应用所使用的资源;启动运行所需应用的进程,以及启动热迁移模块,冻结应用容器及应用进程;热迁移模块用于收集应用容器和应用所使用的资源,保存到检查点目录。

再次启动应用容器时,先创建相应的应用容器,读取保存在存储器上的检查点数据;以及解析检查点数据,恢复应用容器的所需资源,恢复所需应用的进程,启动应用容器。

另一方面,本发明提供了一种应用容器的启动系统,该系统包括:

应用运行模块,用于创建应用运行所需应用容器,并配置运行环境,以及在应用容器中安装运行所需应用。

第一保存恢复模块,用于在存储器上创建保存检查点数据文件的目录,检查点数据文件用于存储应用容器和应用所使用的资源;启动运行所需应用的进程,以及启动热迁移模块,冻结应用容器及应用进程;热迁移模块用于收集应用容器和应用所使用的资源,保存到检查点目录。

第二保存恢复模块,用于再次启动应用容器时,先创建相应的应用容器,读取保存在存储器上的检查点数据;以及解析检查点数据,恢复应用容器的所需资源,恢复所需应用的进程,启动应用容器。

本发明提供的一种应用容器的启动方法及系统,通过对包含已经启动好的应用的应用容器进行冻结和状态存储,并在下一次启动应用容器的时候直接从检查点恢复应用容器和应用,同时采用应用容器热迁移技术,提高了应用容器的启动速度,提升了用户体验度。

附图说明

图1为本发明实施例提供的一种应用容器的启动方法的方法流程图;

图2为本发明实施例提供的一种应用容器的启动系统的结构框图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案作进一步的详细描述。

图1为本发明实施例提供的一种应用容器的启动方法的方法流程图。如图1所示,该方法包括步骤101-103。

步骤101,创建应用运行所需应用容器,并配置运行环境,以及在应用容器中安装运行所需应用。

在docker中创建应用运行所需要的应用容器。应用容器的镜像应选择应用运行所需要的操作系统,在应用容器中应配置应用运行所需要的运行环境,其中,运行环境包括应用运行所依赖的其他程序、库文件和配置环境变量,以使应用能够在应用容器中正常启动。

步骤102,在存储器上创建保存检查点数据文件的目录,检查点数据文件用于存储应用容器和应用所使用的资源;启动运行所需应用的进程,以及启动热迁移模块,冻结应用容器及应用进程;热迁移模块用于收集应用容器和应用所使用的资源,保存到检查点目录。

将应用容器作为一组进程树,通过CRIU(热迁移模块)指令获取其pid,通过/proc/$pid/task/目录获取相关线程,冻结应用容器及运行在应用容器中的应用进程。

其中,CRIU指令可以内置于docker引擎中,这样可以直接根据运行应用的应用容器的ID或者名称,通过执行docker checkpoint指令冻结应用容器及运行在应用容器中的应用进程。

CRIU程序会收集应用容器和应用所使用的所有资源及与应用相关的应用容器状态,写入检查点目录中,(同时还会写入CRIU文件描述符)。除本地资源外,CRIU程序还会收集应用与外部服务器链接的状态,如服务器IP地址、端口号、HTTP请求报文等等,将这些信息单独保存到一个检查点文件中,然后断开外部链接。

CRIU程序可以选择一个工作路径,在其中写入应用容器状态保存记录日志。

步骤103,再次启动应用容器时,先创建相应的应用容器,读取保存在存储器上的检查点数据;以及解析检查点数据,恢复应用容器的所需资源,恢复所需应用的进程,启动应用容器。

当再次启动该应用容器的时候,利用步骤102中使用的应用容器,保证应用能够正常启动。同时,调用CRIU指令,读取步骤102中写入检查点目录中的数据文件。

当不使用步骤102中使用的应用容器时,可以重复步骤101创建一个新的可用的应用容器。

CRIU解析检查点数据,找出哪些进程共享哪些资源,恢复共享资源,调用fork()函数恢复进程,恢复除了内存映射、计时器、证书和线程外的所有基础任务,恢复其他资源,最后读取应用与外部服务器链接状态保存文件内容,与外部服务器重新建立连接,使整个应用容器正常启动。

可选地,当要在不同主机上启动应用容器时,可以重复步骤102,在非本地主机上创建一个新的可用的应用容器。同时要将步骤102中写入检查点目录中的数据文件通过网络或其他途径拷贝到新的主机上指定的检查点目录中,再通过调动CRIU指令读取数据。

本发明提供的一种应用容器热迁移技术加速应用容器启动方法,通过对包含已经启动好的应用的应用容器进行冻结和状态存储,并在下一次启动应用容器的时候直接从检查点恢复应用容器和应用,同时采用应用容器热迁移技术,提高了应用容器的启动速度,提升了用户体验度。

图2为本发明实施例提供的一种应用容器热迁移技术加速应用容器启动系统的结构框图。如图2所示,该装置500包括应用运行模块501、第一保存恢复模块502、第二保存恢复模块503和数据存储模块504。其中,

应用运行模块501,用于创建应用运行所需应用容器,并配置运行环境,以及在应用容器中安装运行所需应用。

第一保存恢复模块502,用于创建保存检查点文件的目录,启动运行所需应用,以及启动热迁移模块,冻结应用容器及应用进程;

第二保存恢复模块503,用于再次启动应用容器时,先创建相应的应用容器,读取保存在存储器上的检查点数据;以及解析检查点数据,恢复应用容器的所需资源,恢复所需应用的进程,启动应用容器。

数据存储模块504,用于保存及迁移检查点数据。

本发明提供的一种应用容器热迁移技术加速应用容器启动装置,通过对包含已经启动好的应用的应用容器进行冻结和状态存储,并在下一次启动应用容器的时候直接从检查点恢复应用容器和应用,同时采用应用容器热迁移技术,提高了应用容器的启动速度,提升了用户体验度。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1