基于runC实现带网络的容器生成与恢复的方法技术

技术编号:18006902 阅读:29 留言:0更新日期:2018-05-21 07:32
本发明专利技术提供一种基于runC实现带网络的容器生成与恢复的方法,包括:1、一键部署相关三方软件,导出预先定制的镜像的根文件系统作为启动容器所需的根文件系统存入rootfs目录,并拷贝配置了网络的配置文件到与该rootfs目录的同级目录中,让容器内外进行通信;2、通过runC启动容器R1后,客户端发送数据给服务端,服务端接收到数据并执行任务;3、当容器R1中的程序出现故障时,用户对容器R1执行快照操作,冻结当前服务端进程,并生成一快照文件,容器R1中的服务端随该容器R1的停止而退出运行,客户端继续运行;4、用户执行恢复操作,启动并恢复容器R2,服务端自动运行,继续执行任务。本发明专利技术提升了部署效率。

【技术实现步骤摘要】
基于runC实现带网络的容器生成与恢复的方法
本专利技术涉及互联网
,尤其涉及一种基于runC实现带网络的容器生成与恢复的方法。
技术介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。runC是一个开源引擎和规范运行容器,它遵守OCI的规范,包括Docker在内。runC的思想配合远景规划,是为任何供应商控制或云栈提供一个免费开源容器。它是基于Docker的LibContainer,作为与操作系统交互的接口。它是Docker公司自己的核心容器引擎。runC可以运行Docker的镜像。它依赖两个组成部分。一个是一组配置指令。这些命令行标志通常追加在Docker运行命令后面;而runC从config.json配置文件中读取配置信息。可以手工创建一个,或者runC将自动创建一个。RunC还需要根文件系统,使它可以操作容器。用户可以手动创建一个目录,作为容器的根文件系统或者文件系统可以利用dockerexport命令从容器中导出。通过上述两块内容,runC可以执行一个容器。runC是一个轻量级通用容器运行环境。目前,它是一个命令行工具,可以根据开放容器方案(OpenContainerInitiative)生成和运行容器,实际上它是从docker分离出的。它的远景是:由Docker、Google、IBM、Microsoft、RedHat还有其他参与者创建一个通用且标准化的运行环境,提供容器运行时的元素可读文档,由Docker向OCI提供基于代码的可用实现方法。这包括libcontainer、Docker使用的原生底层接口、支持操作系统构建。现阶段,我们对于runC的运用,主要是想通过runC调用的criu去冻结进程。一旦所监控的进程出现问题,技术支持人员可以立即收集程序所运行的整个环境,便于快速定位。尤其针对对现网某些不可再现问题的跟踪诊断,这个功能就非常有价值、极具意义。但是由于runC自身不支持网络,添加网络步骤繁琐;并且部署runC环境涉及到的三方软件如docker、go、criu、riddler、netns等,执行起来都非常麻烦。存在一些问题:如runC部署本身的繁杂,以及runC本身缺失网络而必须通过riddler添加网络过程的繁杂,使用runC的复杂性。
技术实现思路
本专利技术要解决的技术问题,在于提供一种基于runC实现带网络的容器生成与恢复的方法,一键部署runC涉及到的相关三方软件、导出预先定制镜像的根文件系统作为runC的根文件系统、并拷贝配置了网络的config.json配置文件,让runC在对现实中会进行socket通信的程序进行进程级冻结,也就是所说的热备份。本专利技术的问题是这样实现的:一种基于runC实现带网络的容器生成与恢复的方法,包括如下步骤:步骤1、一键部署runC涉及到的相关三方软件,接着导出预先定制的镜像的根文件系统作为runC启动容器所需的根文件系统存入对应的rootfs目录,并拷贝配置了网络的配置文件到与该rootfs目录的同级目录中,让容器内外进行通信;步骤2、通过runC启动一容器R1后,该容器R1中的服务端自动运行,宿主机也运行容器R1外的客户端,客户端发送数据给服务端,服务端接收到该数据并执行任务;步骤3、当该容器R1中的程序出现故障时,用户对该容器R1执行快照操作,冻结当前服务端进程,并生成一快照文件,该快照文件包括该容器R1的相关信息,此时该容器R1中的服务端随该容器R1的停止而退出运行;客户端不关闭,继续运行;步骤4、用户执行恢复操作,启动一容器R2,根据该快照文件将容器R2的相关信息恢复成与容器R1完全一致,容器R2中的服务端自动运行,并继续执行容器R1在快照操作前的服务端进程。进一步地,所述步骤1具体包括:步骤11、将部署runC环境所需要的三方软件通过脚本实现安装和配置上的自动化部署,并通过检验命令去检验部署的runC环境是否完整,若完整,则进入步骤12;若不完整,重新进去步骤11;步骤12、通过加载命令去加载预先准备好的镜像,通过加载的镜像ID导出镜像的根文件系统作为runC启动容器所需的根文件系统,存入到要使用的容器的根文件系统对应的rootfs目录中;步骤13、拷贝预先设置好的runC启动容器所需的配置文件到与该rootfs目录的同级目录,该配置文件是通过riddler进行修改后,用hook在容器起动前挂载netns,为容器添加上网络,通过网络使得容器内与容器外的程序互通。进一步地,所述容器R1的相关信息包括容器启动的各种参数、环境变量、终端配置及权限参数。本专利技术的优点在于:由于runC部署本身的繁杂,以及runC本身缺失网络而必须通过riddler添加网络过程的繁杂,使用runC的复杂性,这些技术问题在本方法中都得到了有效解决。本方法提供了一种基于runC,将涉及到的三方软件自动安装配置并添加了网络并精简runC命令的部署环境之后,达到了快速部署runC环境目的,加入了对网络的访问采用一键式安装部署,与之原来的一步步部署相比较,自动化的部署runC方法在效率上得到了很好的提升,带网络的自动化配置,通过固化命令参数使runC在镜像上的操作,使得runC的使用也变得更加简单,自动化的执行,同时也大大降低了误操作的产生。附图说明下面参照附图结合实施例对本专利技术作进一步的说明。图1为本专利技术一种基于runC实现带网络的容器生成与恢复的方法的执行流程图。图2为本专利技术一种基于runC实现带网络的容器生成与恢复的方法中步骤1的具体执行流程图。图3为在runC容器中的socket程序往容器外部发送数据;图4为通过runC快照恢复的容器中socket程序往容器外部发送数据。图5为通过restore恢复的容器中socket程序往容器外部发送数据。图6为通过restore恢复的容器中socket程序往容器外部发送数据。(图3-6的数据流向都是容器内→容器外)具体实施方式为使得本专利技术更明显易懂,现以一优选实施例,并配合附图作详细说明如下。如图1和图2所示,本专利技术是基于runC,通过对runC所需的三方软件部署,然后在通过docker抽取出runC启动容器所需要的根文件系统(必要环境依赖,如/bin、/var、/lib、/dev、/usr等目录及相应文件)存入rootfs目录作为runC启动容器的根文件系统,通过riddler修改config.json配置文件,用hook在prestart(起动前)的时候就运行netns,这个netns实际上就是一个runc关于设置默认桥接网络的钩子,在容器运行的时候增加了runc自身缺失的网络部分,在部署的时候直接拷贝预先设置好的config配置文件。_本专利技术的一种基于runC实现带网络的容器生成与恢复的方法,包括如下步骤:步骤1、一键部署runC涉及到的相关三方软件,接着导出预先定制的镜像的根文件系统作为runC启动容器所需的根文件系统存入对应的rootfs目录,并拷贝配置了网络的配置文件到与该rootfs目录的同级目录中,让容器内外进行通信;所述步骤1具体包括:步骤11、将部署runC环境所需要的三方软件通过脚本实现安本文档来自技高网
...
基于runC实现带网络的容器生成与恢复的方法

【技术保护点】
一种基于runC实现带网络的容器生成与恢复的方法,其特征在于:包括如下步骤:步骤1、一键部署runC涉及到的相关三方软件,接着导出预先定制的镜像的根文件系统作为runC启动容器所需的根文件系统存入对应的rootfs目录,并拷贝配置了网络的配置文件到与该rootfs目录的同级目录中,让容器内外进行通信;步骤2、通过runC启动一容器R1后,该容器R1中的服务端自动运行,宿主机也运行容器R1外的客户端,客户端发送数据给服务端,服务端接收到该数据并执行任务;步骤3、当该容器R1中的程序出现故障时,用户对该容器R1执行快照操作,冻结当前服务端进程,并生成一快照文件,该快照文件包括该容器R1的相关信息,此时该容器R1中的服务端随该容器R1的停止而退出运行;客户端不关闭,继续运行;步骤4、用户执行恢复操作,启动一容器R2,根据该快照文件将容器R2的相关信息恢复成与容器R1完全一致,容器R2中的服务端自动运行,并继续执行容器R1在快照操作前的服务端进程。

【技术特征摘要】
1.一种基于runC实现带网络的容器生成与恢复的方法,其特征在于:包括如下步骤:步骤1、一键部署runC涉及到的相关三方软件,接着导出预先定制的镜像的根文件系统作为runC启动容器所需的根文件系统存入对应的rootfs目录,并拷贝配置了网络的配置文件到与该rootfs目录的同级目录中,让容器内外进行通信;步骤2、通过runC启动一容器R1后,该容器R1中的服务端自动运行,宿主机也运行容器R1外的客户端,客户端发送数据给服务端,服务端接收到该数据并执行任务;步骤3、当该容器R1中的程序出现故障时,用户对该容器R1执行快照操作,冻结当前服务端进程,并生成一快照文件,该快照文件包括该容器R1的相关信息,此时该容器R1中的服务端随该容器R1的停止而退出运行;客户端不关闭,继续运行;步骤4、用户执行恢复操作,启动一容器R2,根据该快照文件将容器R2的相关信息恢复成与容器R1完全一致,容器R2中的服务端自动运行,并继续执行容器R1在快照操作前的服务端进...

【专利技术属性】
技术研发人员:范泽金胡承王颖
申请(专利权)人:福建星网智慧科技股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1