镜像构建、镜像存储、镜像分发方法及装置制造方法及图纸

技术编号:20389044 阅读:18 留言:0更新日期:2019-02-20 02:31
本申请提供了一种镜像构建、镜像存储、镜像分发方法及装置,属于计算机技术领域。本申请将镜像拆分为父镜像和应用镜像,分别构建、存储和分发父镜像和应用镜像,可以将父镜像以及应用镜像彻底解耦开,如果要更新父镜像,则无需重新构建和发送应用镜像,如果要更新应用镜像,则无需重新构建和发送父镜像,如果多个应用镜像依赖于同一父镜像,则只需为一个应用镜像生成和发送父镜像即可,从而极大地提高了构建镜像、存储镜像和分发镜像的灵活性,并极大地提升了父镜像的更新效率和应用镜像的更新效率,节约了存储镜像占用的存储空间。

【技术实现步骤摘要】
镜像构建、镜像存储、镜像分发方法及装置
本申请涉及计算机
,特别涉及一种镜像构建、镜像存储、镜像分发方法及装置。
技术介绍
Docker镜像是一种对应用程序及其运行环境的标准化封装,Docker是一种实现Docker镜像的构建、分发以及运行的引擎。通过Docker,节点设备可以构建Docker镜像,上传至Docker镜像库中,Docker镜像库可以向各个节点设备分发Docker镜像,以便在各个节点设备上部署Docker镜像。以构建Docker镜像的节点设备称为节点A,要部署Docker镜像的节点设备称为节点B,Docker镜像的构建和分发的流程为:节点A会预先存储Docker镜像的镜像构建文件(例如可以是Dockerfile文件),当接收到镜像构建指令(例如可以是dockerbuild指令)时,会运行Dockerfile文件,生成一个Docker镜像,当节点A接收镜像发送指令(例如可以是dockerpush)指令后,会向Docker镜像库发送该Docker镜像,Docker镜像库接收到该Docker镜像后,会对应存储该Docker镜像以及该Docker镜像的镜像标识。当节点B想要下载该Docker镜像时,会向Docker镜像库发送镜像下载指令(例如可以是dockerpull指令),dockerpull指令携带镜像标识,Docker镜像库接收到dockerpull指令,会根据镜像标识,在镜像库中查询到该Docker镜像,将该Docker镜像发送给节点B。基于上述方案,节点A每次构建镜像时,都需要构建包含父镜像和应用镜像的完整镜像,导致每次父镜像更新时,不仅需要更新父镜像,还需要重新构建依赖于父镜像的应用镜像,并重新将父镜像和应用镜像打包成完整镜像,并存储完整的镜像,严重影响了父镜像的更新效率。
技术实现思路
本申请实施例提供了一种镜像构建、镜像存储、镜像分发方法及装置,能够解决相关技术中父镜像的更新效率较低的技术问题,所述技术方案如下:第一方面,提供了一种镜像构建方法,所述方法包括:通过目标镜像的镜像构建文件,分别生成第一镜像以及第二镜像,所述目标镜像包括所述第一镜像以及所述第二镜像,所述第二镜像为所述第一镜像的父镜像;基于所述第一镜像与所述第二镜像之间的依赖关系,获取所述第一镜像的镜像依赖信息,所述镜像依赖信息用于指示所述第一镜像的父镜像为所述第二镜像;分别存储所述第一镜像、所述镜像依赖信息以及所述第二镜像。本申请提供的方法,通过在构建镜像时,将镜像拆分为父镜像和应用镜像,分别生成和存储父镜像和应用镜像,并存储应用镜像的镜像依赖信息,后续需要更新父镜像时,只需重新构建父镜像即可,而无需重新构建依赖于父镜像的应用镜像,也无需将父镜像和应用镜像打包成完整镜像,提高了父镜像的更新效率,节约了镜像占用的存储空间。在一种可能的实现中,所述分别存储所述第一镜像、所述镜像依赖信息,包括:向所述第一镜像中写入所述镜像依赖信息,存储写入了所述镜像依赖信息的第一镜像。在一种可能的实现中,所述向所述第一镜像中写入所述镜像依赖信息,包括:向所述第一镜像的目标文件中写入所述镜像依赖信息,所述目标文件包括所述第一镜像的元数据文件、所述第一镜像的配置文件中的至少一项。在一种可能的实现中,所述基于所述第一镜像与所述第二镜像之间的依赖关系,获取所述第一镜像的镜像依赖信息,包括:根据所述镜像构建文件中的父镜像定义指令,获取所述第一镜像的镜像依赖信息。在一种可能的实现中,所述镜像依赖信息包括所述第二镜像的标识。在一种可能的实现中,所述方法还包括下述至少一个步骤:当接收到所述第一镜像的更新指令时,生成更新后的第一镜像;当接收到所述第二镜像的更新指令时,生成更新后的第二镜像。上述实现中,通过将父镜像的更新过程以及应用镜像的更新过程解耦开,当父镜像更新时,无需生成和发送应用镜像,也无需将应用镜像与父镜像重新编译打包,可以令父镜像的更新更加轻量化、更加高效,提升了更新父镜像的效率,并且减少了节点设备与镜像库节点之间的网络带宽,节约了节点设备上传父镜像的带宽成本。同理地,当应用镜像更新时,无需生成和发送父镜像,也无需将应用镜像与父镜像重新编译打包,提升了更新应用镜像的效率,可以令应用镜像的更新更加轻量化、更加高效,并且减少了节点设备与镜像库节点之间的网络带宽,节约了节点设备上传应用镜像的带宽成本。第二方面,提供了一种镜像存储方法,所述方法包括:接收对目标镜像的发送指令,所述目标镜像包括所述第一镜像以及第二镜像,所述第二镜像为所述第一镜像的父镜像;获取所述第一镜像、所述第一镜像的镜像依赖信息以及第二镜像,所述镜像依赖信息用于指示所述第一镜像的父镜像为所述第二镜像;向镜像库节点分别发送所述第一镜像、所述镜像依赖信息以及所述第二镜像。本申请提供的方法,通过向镜像库节点分别上传父镜像、应用镜像以及镜像依赖信息,镜像库节点可以支持单独上传应用镜像的功能、单独上传父镜像的功能,使得镜像库节点中可以分别存储父镜像、应用镜像以及镜像依赖信息,令镜像的存储更加灵活、更加高效,使得后续需要更新父镜像时,只需重新上传更新后的父镜像即可,而无需上传包含父镜像和应用镜像的完整镜像,提高了父镜像的更新效率,节约了镜像库节点中镜像占用的存储空间。同理地,后续需要更新应用镜像时,只需重新上传更新后的应用镜像即可,而无需上传包含父镜像和应用镜像的完整镜像,提高了应用镜像的更新效率,节约了镜像库节点中镜像占用的存储空间。同理地在一种可能的实现中,所述向镜像库节点分别发送所述第一镜像、所述第二镜像以及所述镜像依赖信息,包括下述至少一个步骤:当历史运行中已发送过所述第一镜像时,向所述镜像库节点发送所述第二镜像;当历史运行中已发送过所述第二镜像时,向所述镜像库节点发送所述第一镜像以及所述镜像依赖信息;当所述镜像库节点已存储所述第一镜像时,向所述镜像库节点发送所述第二镜像;当所述镜像库节点已存储所述第二镜像时,向所述镜像库节点发送所述第一镜像以及所述镜像依赖信息;当所述第一镜像更新后,向所述镜像库节点发送更新后的第一镜像以及所述镜像依赖信息;当所述第二镜像更新后,向所述镜像库节点发送更新后的第二镜像。基于上述实现,可以在历史运行中未发送过父镜像、镜像库节点未存储父镜像、父镜像发生更新、接收到对父镜像的发送指令等场景下,发送父镜像,从而提高生成父镜像以及发送父镜像的灵活性。在一种可能的实现中,所述向镜像库节点分别发送所述第一镜像、所述镜像依赖信息,包括:将携带了镜像依赖信息的第一镜像发送给所述镜像库节点。在一种可能的实现中,所述将携带有镜像依赖信息的第一镜像发送给所述镜像库节点,包括:将目标文件中携带了镜像依赖信息的第一镜像发送给所述镜像库节点,所述目标文件包括所述第一镜像的元数据文件、所述第一镜像的配置文件中的至少一项。第三方面,提供了一种镜像分发方法,所述方法包括:当接收到节点设备对目标镜像的获取指令时,获取第一镜像的镜像依赖信息,所述目标镜像包括所述第一镜像以及第二镜像,所述第二镜像为所述第一镜像的父镜像,所述镜像依赖信息用于指示所述第一镜像的父镜像为第二镜像;对所述第一镜像以及所述第二镜像进行组装,得到所述目标镜像;向所述节点设备发送所述目标镜像。本实施例提供的方法,镜本文档来自技高网
...

【技术保护点】
1.一种镜像构建方法,其特征在于,所述方法包括:通过目标镜像的镜像构建文件,分别生成第一镜像以及第二镜像,所述目标镜像包括所述第一镜像以及所述第二镜像,所述第二镜像为所述第一镜像的父镜像;基于所述第一镜像与所述第二镜像之间的依赖关系,获取所述第一镜像的镜像依赖信息,所述镜像依赖信息用于指示所述第一镜像的父镜像为所述第二镜像;分别存储所述第一镜像、所述镜像依赖信息以及所述第二镜像。

【技术特征摘要】
1.一种镜像构建方法,其特征在于,所述方法包括:通过目标镜像的镜像构建文件,分别生成第一镜像以及第二镜像,所述目标镜像包括所述第一镜像以及所述第二镜像,所述第二镜像为所述第一镜像的父镜像;基于所述第一镜像与所述第二镜像之间的依赖关系,获取所述第一镜像的镜像依赖信息,所述镜像依赖信息用于指示所述第一镜像的父镜像为所述第二镜像;分别存储所述第一镜像、所述镜像依赖信息以及所述第二镜像。2.根据权利要求1所述的方法,其特征在于,所述分别存储所述第一镜像、所述镜像依赖信息,包括:向所述第一镜像中写入所述镜像依赖信息,存储写入了所述镜像依赖信息的第一镜像。3.根据权利要求2所述的方法,其特征在于,所述向所述第一镜像中写入所述镜像依赖信息,包括:向所述第一镜像的目标文件中写入所述镜像依赖信息,所述目标文件包括所述第一镜像的元数据文件、所述第一镜像的配置文件中的至少一项。4.根据权利要求1所述的方法,其特征在于,所述基于所述第一镜像与所述第二镜像之间的依赖关系,获取所述第一镜像的镜像依赖信息,包括:根据所述镜像构建文件中的父镜像定义指令,获取所述第一镜像的镜像依赖信息。5.根据权利要求1所述的方法,其特征在于,所述镜像依赖信息包括所述第二镜像的标识。6.根据权利要求1所述的方法,其特征在于,所述方法还包括下述至少一个步骤:当接收到所述第一镜像的更新指令时,生成更新后的第一镜像;当接收到所述第二镜像的更新指令时,生成更新后的第二镜像。7.一种镜像存储方法,其特征在于,所述方法包括:接收对目标镜像的发送指令,所述目标镜像包括所述第一镜像以及第二镜像,所述第二镜像为所述第一镜像的父镜像;获取所述第一镜像、所述第一镜像的镜像依赖信息以及第二镜像,所述镜像依赖信息用于指示所述第一镜像的父镜像为所述第二镜像;向镜像库节点分别发送所述第一镜像、所述镜像依赖信息以及所述第二镜像。8.根据权利要求7所述的方法,其特征在于,所述向镜像库节点分别发送所述第一镜像、所述第二镜像以及所述镜像依赖信息,包括下述至少一个步骤:当历史运行中已发送过所述第一镜像时,向所述镜像库节点发送所述第二镜像;当历史运行中已发送过所述第二镜像时,向所述镜像库节点发送所述第一镜像以及所述镜像依赖信息;当所述镜像库节点已存储所述第一镜像时,向所述镜像库节点发送所述第二镜像;当所述镜像库节点已存储所述第二镜像时,向所述镜像库节点发送所述第一镜像以及所述镜像依赖信息;当所述第一镜像更新后,向所述镜像库节点发送更新后的第一镜像以及所述镜像依赖信息;当所述第二镜像更新后,向所述镜像库节点发送更新后的第二镜像。9.根据权利要求7所述的方法,其特征在于,所述向镜像库节点分别发送所述第一镜像、所述镜像依赖信息,包括:将携带了镜像依赖信息的第一镜像发送给所述镜像库节点。10.根据权利要求9所述的方法,其特征在于,所述将携带有镜像依赖信息的第一镜像发送给所述镜像库节点,包括:将目标文件中携带了镜像依赖信息的第一镜像发送给所述镜像库节点,所述目标文件包括所述第一镜像的元数据文件、所述第一镜像的配置文件中的至少一项。11.一种镜像分发方法,其特征在于,所述方法包括:当接收到节点设备对目标镜像的获取指令时,获取第一镜像的镜像依赖信息,所述目标镜像包括所述第一镜像以及第二镜像,所述第二镜像为所述第一镜像的父镜像,所述镜像依赖信息用于指示所述第一镜像的父镜像为第二镜像;对所述第一镜像以及所述第二镜像进行组装,得到所述目标镜像;向所述节点设备发送所述目标镜像。12.根据权利要求11所述的方法,其特征在于,所述获取所述第一镜像的镜像依赖信息,包括:对所述第一镜像进行解析,得到所述第一镜像的镜像依赖信息。13.根据权利要求12所述的方法,其特征在于,所述对所述第...

【专利技术属性】
技术研发人员:刘艮平
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1