本申请提供了一种Android容器创建方法与装置、电子设备及存储介质,方法包括:获取Docker镜像以及Android容器运行需要的数据包,其中,所述Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成;基于所述Docker镜像以及数据包创建Android容器,其中,同一宿主机的不同Android容器在创建时复用Android容器运行需要的数据包,能够减少Docker镜像打包耗时以及对宿主机的存储空间消耗。对宿主机的存储空间消耗。对宿主机的存储空间消耗。
【技术实现步骤摘要】
Android容器创建方法与装置
[0001]本专利技术涉及计算机
,特别涉及一种Android容器创建方法与装置、电子设备及存储介质。
技术介绍
[0002]Android系统是基于Linux系统发展而来,其内核仍然沿用标准Linux内核。Android系统的容器化方案通常使用Docker(一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,并可以发布到Linux系统中,以沙箱的形式相对独立运行)实现,不同的Android设备对Docker服务的支持能力不同,例如部分系统版本只能以虚拟文件系统vfs存储驱动形式运行容器,此种方式下在宿主机上创建容器时,首先会将Android系统打包成Docker镜像,利用Docker镜像创建容器,之后每创建一个容器都会拷贝一份Docker镜像内容来使用。这个过程中,一方面,Android系统大小通常在2G左右,会导致打包过程耗时较长;另一方面,在宿主机上所消耗的存储空间会随着容器数量的增多而线性增长,而通常这种打包方式产生的Docker镜像体积在1.5GB以上,当容器数量较多时,会极大耗费宿主机的存储空间。
[0003]因此,如何提供一种容器创建方案,以减少Docker镜像打包耗时以及对宿主机的存储空间消耗,成为亟待解决的技术问题。
技术实现思路
[0004]针对现有技术存在的技术问题,本申请实施例提供一种Android容器创建方法与装置、电子设备及存储介质。
[0005]第一方面,本申请实施例提供了一种Android容器创建方法,包括:获取Docker镜像以及Android容器运行需要的数据包,其中,所述Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成;基于所述Docker镜像以及数据包创建Android容器,其中,同一宿主机的不同Android容器在创建时复用Android容器运行需要的数据包。
[0006]第二方面,本申请实施例还提供了一种Android容器创建装置,包括:获取单元,用于获取Docker镜像以及Android容器运行需要的数据包,其中,所述Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成;创建单元,用于基于所述Docker镜像以及数据包创建Android容器,其中,同一宿主机的不同Android容器在创建时复用Android容器运行需要的数据包。
[0007]第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的Android容器创建方法的步骤。
[0008]第四方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,
所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面所述的Android容器创建方法的步骤。
[0009]综上,本申请实施例提供的Android容器创建方法与装置、电子设备及存储介质,指定Android容器运行的Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成,且Android容器运行需要的数据包,能够保证容器能够正常运行Android系统;在此基础上,一方面,仅将Android系统第一个用户态程序运行所需要的文件环境的最小集合打包成Docker镜像,而非将Android系统的全部内容打包成Docker镜像,从而相较于现有技术,能够减少Docker镜像打包耗时;另一方面,每创建一个容器需要拷贝的Docker镜像仅包含Android系统第一个用户态程序运行所需要的文件环境的最小集合,不包含Android系统的其它内容,且同一宿主机的不同Android容器在创建时复用Android容器运行需要的数据包,使得拷贝的Docker镜像内容大幅减少,且相同的数据包只需要存储一份即可满足不同容器运行需求,因而能够减少对宿主机的存储空间消耗。
附图说明
[0010]图1为本申请实施例提供的一种Android容器创建方法一实施例的流程示意图;图2为本申请实施例提供的一种Android容器创建装置一实施例的结构示意图;图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0011]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
[0012]另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0013]需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
[0014]参照图1所示,为本申请实施例提供的一种Android容器创建方法的流程示意图,该方法具体包括:S10、获取Docker镜像以及Android容器运行需要的数据包,其中,所述Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成;本实施例中,需要说明的是, Linux容器镜像通常会以某一个标准Linux发行版的
镜像作为基础镜像,再叠加一些开发者集成修改的内容,并定义镜像启动后执行的入口程序。而Android系统与Linux系统启动和运行机制相差较大,使得Android容器镜像无法以标准Linux发行版镜像作为基础镜像,而必须完全自主构建镜像,并且需要正确定义Android容器镜像启动后执行的入口程序。
[0015]考虑到Docker的运行机制是宿主机系统与容器系统共用Linux内核,以命名空间进行隔离划分,那么Android容器镜像启动后执行的入口程序应该是Android系统第一个用户态程序,因此Android容器运行需要的最基本的内容是Android源码编译产生的Android系统第一个用户态程序运行所需要的文件环境的最小集合。将此内容指定为Android容器运行需要的Docker镜像,并配置合理的环境变量,定义镜像启动后执行的入口程序本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Android容器创建方法,其特征在于,包括:获取Docker镜像以及Android容器运行需要的数据包,其中,所述Docker镜像基于Android系统第一个用户态程序运行所需要的文件环境的最小集合打包生成;基于所述Docker镜像以及数据包创建Android容器,其中,同一宿主机的不同Android容器在创建时复用Android容器运行需要的数据包。2.如权利要求1所述的方法,其特征在于,所述获取Docker镜像以及Android容器运行需要的数据包,包括:从预设的第一存储服务器下载所述Docker镜像或者基于所述Android容器所在的宿主机的Android系统生成所述Docker镜像;以及从预设的第二存储服务器下载所述数据包或者基于所述Android系统生成所述数据包。3.如权利要求2所述的方法,其特征在于,所述基于所述Docker镜像以及数据包创建Android容器,包括:采用overlay文件系统,将所述数据包作为lower层,空目录作为upper层,创建出所述Android容器的专有数据包;将所述专有数据包挂载至所述Android容器中对应的挂载点处。4.如权利要求2所述的方法,其特征在于,将所述数据包作为第一数据包;其中,所述基于所述Docker镜像以及数据包创建Android容器,包括:获取所述数据包的差分升级数据包,并将所述差分升级数据包作为第二数据包;采用overlay文件系统,将所述第一数据包作为lower层,所述第二数据包作为upper层,创建出所述Android容器的通用数据包;采用overlay文件系统,将所述通用数据包作为lower层,空目录作为upper层,创建出所述Android容器的专有数据包;将所述专有数据包挂载至所述Android容器中对应的挂载点处。5.如权利要求1至4任一项所述的方法,其特征在于,所述Android系统第一个...
【专利技术属性】
技术研发人员:王思远,
申请(专利权)人:北京海誉动想科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。