CN112463304A - 容器镜像的回滚方法、装置、计算机设备和存储介质 - Google Patents

容器镜像的回滚方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN112463304A
CN112463304A CN202011395158.5A CN202011395158A CN112463304A CN 112463304 A CN112463304 A CN 112463304A CN 202011395158 A CN202011395158 A CN 202011395158A CN 112463304 A CN112463304 A CN 112463304A
Authority
CN
China
Prior art keywords
mirror image
mirror
container
version
updating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011395158.5A
Other languages
English (en)
Inventor
李睿川
罗利辉
王要深
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CN202011395158.5A priority Critical patent/CN112463304A/zh
Publication of CN112463304A publication Critical patent/CN112463304A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/143Reconfiguring to eliminate the error with loss of software functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种容器镜像的回滚方法、装置、计算机设备和存储介质。所述方法包括:接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;根据所述镜像标识,在本地数据库中查询与所述镜像标识对应的镜像名称和版本号是否存在;若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;若不存在,则返回错误信息。采用本方法能够将容器镜像回滚到特定版本,并且能识别并反馈哪些镜像版本是可以回滚的,解决了新容器无法拉取对应版本镜像的问题,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。

Description

容器镜像的回滚方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种容器镜像的回滚方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,在微服务云容器化的趋势下,云服务治理成为运维管理的难点。持续集成(CI-Continuous integration)、持续部署(CD-continuous deployment)是云服务治理中不可或缺的工具,负责管理项目从代码转变成微服务的过程。当CD即持续部署任务执行失败或产生误操作时,需要将微服务涉及的镜像回滚到上一个版本或某个特定的历史版本,是纠正这种情况的一项补救措施。
然而,目前容器镜像的回滚方式中,通常使用容器编排工具自带的回滚功能进行处理,容易导致即使更新容器成功,但新容器无法拉取对应版本镜像,使得新容器无法正常启动,进而导致无法提供服务。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决新容器无法拉取对应版本镜像的容器镜像的回滚方法、装置、计算机设备和存储介质。
一种容器镜像的回滚方法,所述方法包括:
接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
根据所述镜像标识,在本地数据库中查询与所述镜像标识对应的镜像名称和版本号是否存在;
若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
若不存在,则返回错误信息。
在其中一个实施例中,所述接收到客户端发起的容器的镜像回滚请求之前,所述方法还包括:
向镜像仓库服务注册回调接口,通过所述回调接口对所述本地数据库中保存的镜像表数据进行同步更新。
在其中一个实施例中,所述向镜像仓库服务注册回调接口包括:
在所述镜像仓库服务对应的配置文件中设置回调接口对应的配置参数;
所述配置参数中包括统一资源定位系统地址;所述统一资源定位系统地址用于指示所述镜像仓库服务发送回调事件请求至所述统一资源定位系统参数地址。
在其中一个实施例中,所述通过所述回调接口对所述本地数据库中保存的镜像表数据进行同步更新包括:
在接收到所述镜像仓库通过所述回调接口发送的回调事件请求情况下,根据所述回调事件请求中携带的镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新。
在其中一个实施例中,所述根据所述镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新,包括:
当所述回调事件为推送事件时,根据所述镜像标识,在所述本地数据库中保存的镜像表数据中查询是否存在对应的镜像名称和版本号的记录;所述推送事件是当用户向所述镜像仓库上传镜像完成时触发;
若存在,则更新所述镜像标识;
若不存在,则将所述镜像名称和版本号插入所述镜像表数据中。
在其中一个实施例中,所述根据所述镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新,包括:
当所述回调事件为删除事件时,在所述本地数据库中保存的镜像表数据中删除对应的镜像名称和版本号的记录;所述删除事件是当用户从所述镜像仓库删除镜像时触发。
在其中一个实施例中,所述向镜像仓库服务注册回调接口包括:
通过docker registry服务配置所述回调接口;
或者通过镜像仓库管理工具配置部分项目的回调接口或全局的回调接口。
一种容器镜像的回滚装置,所述装置包括:
接收模块,用于接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
查询模块,用于根据所述镜像标识,在本地数据库中查询对应的镜像名称和版本号是否存在;
更新模块,用于若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
返回模块,用于若不存在,则返回错误信息。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
根据所述镜像标识,在本地数据库中查询与所述镜像标识对应的镜像名称和版本号是否存在;
若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
若不存在,则返回错误信息。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
根据所述镜像标识,在本地数据库中查询与所述镜像标识对应的镜像名称和版本号是否存在;
若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
若不存在,则返回错误信息。
上述容器镜像的回滚方法、装置、计算机设备和存储介质,通过接收到客户端发起的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。若存在,则向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。若不存在,则返回错误信息。由此使得,能够将容器镜像回滚到特定版本,并且能识别并反馈哪些镜像版本是可以回滚的,解决了新容器无法拉取对应版本镜像的问题,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。
附图说明
图1为一个实施例中容器镜像的回滚方法的应用环境图;
图2为一个实施例中容器镜像的回滚方法的流程示意图;
图3A为一个实施例中某服务端对应的容器镜像的回滚流程示意图;
图3B为一个实施例中容器镜像的回滚的流程示意图;
图4为一个实施例中向镜像仓库服务注册回调接口步骤的流程示意图;
图5为一个实施例中镜像仓库服务回调请求的流程示意图;
图6为一个实施例中根据镜像标识,对本地数据库中保存的镜像表数据进行同步更新的流程示意图;
图7为一个实施例中容器镜像的回滚装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的容器镜像的回滚方法,可以应用于如图1所示的应用环境中。其中,客户端102通过网络与服务器104通过网络进行通信。服务器104接收到客户端102发起的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。服务器104根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。若存在,则服务器104向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。若不存在,则服务器104返回错误信息。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种容器镜像的回滚方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,接收到客户端发起的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。
在微服务云容器化的趋势下,云服务治理成为运维管理的难点。持续集成(CI-Continuous integration)、持续部署(CD-continuous deployment)是云服务治理中不可或缺的工具,负责管理项目从代码转变成微服务的过程。当CD即持续部署任务执行失败或产生误操作时,需要将微服务涉及的镜像回滚到上一个版本或某个特定的历史版本,是纠正这种情况的一项补救措施。通过部署容器的方式,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。
具体的,用户可以通过在PC端或手机应用程序中或浏览器网页中输入用户名和密码的方式,登录特定场景的系统中,用户可以通过app(Application,应用程序)或web浏览器发起特定容器的镜像回滚请求,系统后台接收到客户端发起的容器的镜像回滚请求,通过数据中心将容器的镜像回滚请求推送至服务器,服务器可以接收到数据中心推送的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。其中,客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行是指与服务器相对应,为用户提供本地服务的程序。例如,客户端可以是移动终端,也可以是浏览器或能根据用户操作发起http请求的任何工具。容器(container)是指一种互相资源隔离的单进程的运行环境。镜像是指容器启动所需的必备环境、资源、进程的集合,通常包含镜像名称、版本号以及镜像ID。镜像标识即镜像ID,用于标识唯一的镜像名称和版本。镜像回滚请求是指将当前容器回滚到指定的镜像版本的请求。
步骤204,根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。
服务器接收到客户端发起的容器的镜像回滚请求之后,服务器可以根据镜像回滚请求中携带的镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。具体的,可以预先将服务器的回调接口注册到镜像仓库中。镜像仓库,一般指dockerregistry,也可以是支持镜像拉取、注册回调接口的任何镜像仓库管理工具,比如harbor。镜像仓库用于存储镜像,可以包括镜像名称相同、版本号不同的多个镜像的集合。
当镜像仓库中的镜像版本产生触发事件时,镜像仓库会将触发事件对应的镜像名称、版本、地址、ID、时间等信息作为参数,调用服务器的回调接口。服务器可以根据接收到的触发事件,实时对本地数据库中保存的镜像表数据进行同步更新。当服务器接收到客户端发起的容器的镜像回滚请求时,服务器就可以直接在本地数据库的数据表中查询所指定的镜像名称和版本是否存在。
步骤206,若存在,则向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。
步骤208,若不存在,则返回错误信息。
服务器根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。若存在,则服务器向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。若不存在,则服务器返回错误信息。其中,容器编排服务一般指kubernetes简称K8s,是用8代替8个字符“ubernete”而成的缩写,即一种容器编排工具。kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。容器编排服务也可以是其他具有容器编排功能的服务或者工具,例如Docker Compose,Docker Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用等。docker是一种常用的容器管理工具。其中,镜像仓库是独立于容器编排工具之外的一个服务,用于存储镜像。容器编排工具在不存在镜像仓库的情况下同样可以提供服务,不同类型的镜像仓库对容器编排工具的正常功能不产生影响,因此,镜像仓库和运行容器的容器编排工具之间不存在直接的从属关系。
具体的,如图3A所示,为某服务端对应的容器镜像的回滚流程示意图。服务器根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。若存在,则服务器可以向容器编排服务发起更新容器的镜像的请求,使得容器编排服务根据镜像名称和版本号,对容器的镜像版本进行更新,即服务器可以利用容器编排工具对某个运行中服务的镜像进行更新。若不存在,则服务器返回错误信息。即服务器接收到客户端发起的容器的镜像回滚请求之后,服务器可以在数据库表中根据镜像名称和版本搜索符合条件的镜像版本,若存在记录,前端会显示“允许回滚”或同义提示,否则不会显示“允许回滚”或显示“禁止回滚”等同义提示。例如,如图3B所示,当客户端向服务端发起将某个容器回滚到指定镜像版本的请求后,服务端先在数据表中查询所指定的镜像名称和版本是否存在,若存在则服务器向kubernetes发起更新deployment/statefulset的请求,将指定容器的镜像更新为指定的镜像和版本;若不存在,则服务器向前端(即客户端)返回错误信息。其中,deployment/statefulset是指一种k8s定义的对象,表示一个运行中服务,它是一个容器的集合。
传统方式中,比如使用k8s等容器编排工具自带的回滚功能时,由于保存镜像的镜像仓库和运行容器的容器编排工具之间不存在直接的从属关系,所以容器编排工具无法识别更新所需的镜像是否存在,所以会导致即使容器更新成功,但新容器无法拉取对应的镜像,无法正常启动的问题,进而导致无法提供服务。而本实施例中,通过接收到客户端发起的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。根据镜像标识,在本地数据库中查询与镜像标识对应的镜像名称和版本号是否存在。若存在,则向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。若不存在,则返回错误信息。由此使得,能够将容器镜像回滚到特定版本,并且能识别并反馈哪些镜像版本是可以回滚的,解决了新容器无法拉取对应版本镜像的问题,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。
在一个实施例中,接收到客户端发起的容器的镜像回滚请求之前,该方法还包括:
向镜像仓库服务注册回调接口,通过回调接口对本地数据库中保存的镜像表数据进行同步更新。
服务器接收到客户端发起的容器的镜像回滚请求之前,服务器可以预先向镜像仓库服务注册回调接口,通过回调接口对本地数据库中保存的镜像表数据进行同步更新。具体的,服务器可以通过多种方式向镜像仓库服务注册回调接口,通过回调接口对本地数据库中保存的镜像表数据进行同步更新。例如,在docker registry的配置文件中可以添加对应的配置参数。通过修改配置文件中的参数,然后重启服务实现向镜像仓库服务注册回调接口。由此使得,通过预先向镜像仓库服务注册回调接口,使得能够根据镜像仓库的推送或删除事件对本地数据库保存的镜像版本数据进行同步。
在其中一个实施例中,如图4所示,向镜像仓库服务注册回调接口的步骤,包括:
步骤402,在镜像仓库服务对应的配置文件中设置回调接口对应的配置参数。
步骤404,配置参数中包括统一资源定位系统地址,统一资源定位系统地址用于指示镜像仓库服务发送回调事件请求至统一资源定位系统参数地址。
服务器可以预先向镜像仓库服务注册回调接口,通过回调接口对本地数据库中保存的镜像表数据进行同步更新。具体的,可以预先在镜像仓库服务对应的配置文件中设置回调接口对应的配置参数。配置参数中包括统一资源定位系统地址,统一资源定位系统地址用于指示镜像仓库服务发送回调事件请求至统一资源定位系统参数地址。例如,在docker registry的配置文件中设置回调接口对应的配置参数如下:notifications:
Endpoints:
-name:callback
disabled:false
url:http://127.0.0.1:8080/callback/image
timeout:3000ms
threshold:5
backoff:1s
其中,配置文件中添加的配置参数可以包括URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。URL即执行回调时请求发往的地址,在本申请中指服务器提供的回调接口。配置文件中的threshold、backoff是一些附加属性配置信息,threshold是指失败等待时间,backoff是指失败重试间隔。上述配置参数只是针对一种镜像仓库配置回调方式的示例,针对不同镜像仓库的配置方式包括但不限于上述配置参数。由此使得,通过预先向镜像仓库服务注册回调接口,使得能够根据镜像仓库的推送或删除事件对本地数据库保存的镜像版本数据进行同步。
在一个实施例中,通过回调接口对本地数据库中保存的镜像表数据进行同步更新的步骤,包括:
在接收到镜像仓库通过回调接口发送的回调事件请求情况下,根据回调事件请求中携带的镜像标识,对本地数据库中保存的镜像表数据进行同步更新。
服务器向镜像仓库服务注册回调接口之后,服务器可以通过回调接口对本地数据库中保存的镜像表数据进行同步更新。具体的,服务器在接收到镜像仓库通过回调接口发送的回调事件请求情况下,根据回调事件请求中携带的镜像标识,对本地数据库中保存的镜像表数据进行同步更新。例如,如图5所示,为镜像仓库服务回调请求的流程示意图。当镜像仓库中的镜像版本产生推送或删除事件时,镜像仓库可以将推送事件或删除事件对应的镜像名称、版本、地址、ID、时间等信息作为参数,调用服务器的回调接口。如果是推送事件,服务器根据接收到的推送事件,查询本地数据库中是否存在相同镜像名称、版本的记录,若不存在,则服务器将与该推送事件对应的镜像名称、版本的记录插入数据表中。若存在,则服务器根据推送事件对应的镜像名称、版本的记录更新对应的ID。如果是删除事件,则服务器根据该删除事件,将本地数据库中与该删除事件对应的镜像名称、版本的记录从数据库表中删除。其中,镜像仓库用于存储镜像,当用户完成向镜像仓库上传镜像时,会触发事件,即为“推送事件”,当用户从镜像仓库删除镜像时,会触发“删除事件”。由此使得,通过向镜像仓库服务注册回调接口,能够根据回调事件请求,新增、更新、删除本地数据库中对应的记录,使得本地数据库记录和镜像仓库服务实际存储镜像的数据一致,在容器镜像回滚之前能快捷方便地查询到要回滚的镜像版本是否仍然存在,从而判断是否进行回滚,解决了新容器无法拉取对应版本镜像的问题,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。
在一个实施例中,如图6所示,根据镜像标识,对本地数据库中保存的镜像表数据进行同步更新的步骤,包括:
步骤602,当回调事件为推送事件时,根据镜像标识,在本地数据库中保存的镜像表数据中查询是否存在对应的镜像名称和版本号的记录,推送事件是当用户向镜像仓库上传镜像完成时触发。
步骤604,若存在,则更新镜像标识。
步骤606,若不存在,则将镜像名称和版本号插入镜像表数据中。
在服务器接收到镜像仓库通过回调接口发送的回调事件请求情况下,服务器可以根据回调事件请求中携带的镜像标识,对本地数据库中保存的镜像表数据进行同步更新。具体的,当回调事件为推送事件时,服务器可以根据推送事件携带的镜像标识,在本地数据库中保存的镜像表数据中查询是否存在对应的镜像名称和版本号的记录,推送事件是当用户向镜像仓库上传镜像完成时触发的。若存在,则服务器对本地数据库中保存的镜像表数据中的镜像标识进行更新。若不存在,则服务器将镜像名称和版本号插入本地数据库的镜像表数据中。即当镜像仓库通过回调接口将“推送或删除”事件推送到服务器后,服务器可以根据这些事件的镜像ID为主键,更新本地数据库中对应的镜像表的记录,保存目前镜像仓库存在的镜像信息,包括名称、版本以及其他附加信息。传统的技术中,由于容器编排工具无法识别更新所需的镜像是否存在,所以会导致容器更新成功,但新容器无法拉取对应版本的镜像,无法正常启动的问题,进而导致无法提供对应的服务。本实施例中,通过镜像名称和版本号查询数据库,可以确定镜像版本是否存在,确保所指定的镜像版本存在于仓库,从而避免新容器无法拉取对应版本镜像的问题,即在每次进行容器镜像回滚时,通过查询本地数据库中的记录,验证指定的镜像版本是否存在,从而确保将容器镜像回滚到特定版本,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。
在一个实施例中,根据镜像标识,对本地数据库中保存的镜像表数据进行同步更新的步骤,包括:
当回调事件为删除事件时,在本地数据库中保存的镜像表数据中删除对应的镜像名称和版本号的记录,删除事件是当用户从镜像仓库删除镜像时触发。
在服务器接收到镜像仓库通过回调接口发送的回调事件请求情况下,服务器可以根据回调事件请求中携带的镜像标识,对本地数据库中保存的镜像表数据进行同步更新。具体的,当回调事件为删除事件时,服务器可以根据删除事件中携带的镜像标识,在本地数据库中保存的镜像表数据中删除对应的镜像名称和版本号的记录,其中,删除事件是当用户从镜像仓库删除镜像时触发。由此使得,通过向镜像仓库服务注册回调接口,并根据回调事件请求,新增、更新或者删除本地数据库中对应的记录。由此使得,通过向镜像仓库服务注册回调接口,能够根据回调事件请求,新增、更新、删除本地数据库中对应的记录,使得本地数据库记录和镜像仓库服务实际存储镜像的数据一致,在容器镜像回滚之前能快捷方便地查询到要回滚的镜像版本是否仍然存在,从而判断是否进行回滚,解决了新容器无法拉取对应版本镜像的问题,使得新容器能够拉取指定的镜像版本正常运行,提供相应的服务。
在一个实施例中,向镜像仓库服务注册回调接口的步骤,包括:
通过docker registry服务配置回调接口。
或者通过镜像仓库管理工具配置部分项目的回调接口或全局的回调接口。
服务器接收到客户端发起的容器的镜像回滚请求之前,服务器可以预先向镜像仓库服务注册回调接口。具体的,服务器向镜像仓库服务注册回调接口时,可以直接通过docker registry服务配置回调接口参数,也可以通过某些镜像仓库管理中间服务(例如harbor)配置针对部分项目或者全局的回调接口。由此使得,通过向镜像仓库服务注册回调接口,使得能够根据镜像仓库的推送或删除事件对本地数据库保存的镜像版本数据进行同步更新,保证了在回滚之前能快捷方便地查询到要回滚的镜像版本是否仍然存在,从而判断是否可以进行回滚。
应该理解的是,虽然图1-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种容器镜像的回滚装置,包括:接收模块702、查询模块704、更新模块706和返回模块708,其中:
接收模块702,用于接收到客户端发起的容器的镜像回滚请求,镜像回滚请求中携带镜像标识。
查询模块704,用于根据镜像标识,在本地数据库中查询对应的镜像名称和版本号是否存在。
更新模块706,用于若存在,则向容器编排服务发起更新容器的镜像的请求,根据镜像名称和版本号,对容器的镜像版本进行更新。
返回模块708,用于若不存在,则返回错误信息。
在一个实施例中,更新模块还用于向镜像仓库服务注册回调接口,通过回调接口对本地数据库中保存的镜像表数据进行同步更新。
在一个实施例中,该装置还包括:设置模块。
设置模块用于在镜像仓库服务对应的配置文件中设置回调接口对应的配置参数,配置参数中包括统一资源定位系统地址,统一资源定位系统地址用于指示镜像仓库服务发送回调事件请求至统一资源定位系统参数地址。
在一个实施例中,更新模块还用于在接收到镜像仓库通过回调接口发送的回调事件请求情况下,根据回调事件请求中携带的镜像标识,对本地数据库中保存的镜像表数据进行同步更新。
在一个实施例中,查询模块还用于当回调事件为推送事件时,根据镜像标识,在本地数据库中保存的镜像表数据中查询是否存在对应的镜像名称和版本号的记录,推送事件是当用户向镜像仓库上传镜像完成时触发。若存在,则更新镜像标识;若不存在,则将镜像名称和版本号插入镜像表数据中。
在一个实施例中,该装置还包括:删除模块。
删除模块用于当回调事件为删除事件时,在本地数据库中保存的镜像表数据中删除对应的镜像名称和版本号的记录,删除事件是当用户从镜像仓库删除镜像时触发。
在一个实施例中,该装置还包括:配置模块。
配置模块用于通过docker registry服务配置回调接口;或者通过镜像仓库管理工具配置部分项目的回调接口或全局的回调接口。
关于容器镜像的回滚装置的具体限定可以参见上文中对于容器镜像的回滚方法的限定,在此不再赘述。上述容器镜像的回滚装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储容器镜像的回滚数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种容器镜像的回滚方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种容器镜像的回滚方法,所述方法包括:
接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
根据所述镜像标识,在本地数据库中查询与所述镜像标识对应的镜像名称和版本号是否存在;
若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
若不存在,则返回错误信息。
2.根据权利要求1所述的方法,其特征在于,所述接收到客户端发起的容器的镜像回滚请求之前,所述方法还包括:
向镜像仓库服务注册回调接口,通过所述回调接口对所述本地数据库中保存的镜像表数据进行同步更新。
3.根据权利要求2所述的方法,其特征在于,所述向镜像仓库服务注册回调接口包括:
在所述镜像仓库服务对应的配置文件中设置回调接口对应的配置参数;
所述配置参数中包括统一资源定位系统地址;所述统一资源定位系统地址用于指示所述镜像仓库服务发送回调事件请求至所述统一资源定位系统参数地址。
4.根据权利要求2所述的方法,其特征在于,所述通过所述回调接口对所述本地数据库中保存的镜像表数据进行同步更新包括:
在接收到所述镜像仓库通过所述回调接口发送的回调事件请求情况下,根据所述回调事件请求中携带的镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新。
5.根据权利要求4所述的方法,其特征在于,所述根据所述镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新,包括:
当所述回调事件为推送事件时,根据所述镜像标识,在所述本地数据库中保存的镜像表数据中查询是否存在对应的镜像名称和版本号的记录;所述推送事件是当用户向所述镜像仓库上传镜像完成时触发;
若存在,则更新所述镜像标识;
若不存在,则将所述镜像名称和版本号插入所述镜像表数据中。
6.根据权利要求4所述的方法,其特征在于,所述根据所述镜像标识,对所述本地数据库中保存的镜像表数据进行同步更新,包括:
当所述回调事件为删除事件时,在所述本地数据库中保存的镜像表数据中删除对应的镜像名称和版本号的记录;所述删除事件是当用户从所述镜像仓库删除镜像时触发。
7.根据权利要求2所述的方法,其特征在于,所述向镜像仓库服务注册回调接口包括:
通过docker registry服务配置所述回调接口;
或者通过镜像仓库管理工具配置部分项目的回调接口或全局的回调接口。
8.一种容器镜像的回滚装置,其特征在于,所述装置包括:
接收模块,用于接收到客户端发起的容器的镜像回滚请求;所述镜像回滚请求中携带镜像标识;
查询模块,用于根据所述镜像标识,在本地数据库中查询对应的镜像名称和版本号是否存在;
更新模块,用于若存在,则向容器编排服务发起更新所述容器的镜像的请求,根据所述镜像名称和版本号,对所述容器的镜像版本进行更新;
返回模块,用于若不存在,则返回错误信息。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202011395158.5A 2020-12-03 2020-12-03 容器镜像的回滚方法、装置、计算机设备和存储介质 Pending CN112463304A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011395158.5A CN112463304A (zh) 2020-12-03 2020-12-03 容器镜像的回滚方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011395158.5A CN112463304A (zh) 2020-12-03 2020-12-03 容器镜像的回滚方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN112463304A true CN112463304A (zh) 2021-03-09

Family

ID=74805354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011395158.5A Pending CN112463304A (zh) 2020-12-03 2020-12-03 容器镜像的回滚方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN112463304A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918096A (zh) * 2021-10-21 2022-01-11 城云科技(中国)有限公司 一种算法镜像包的上传方法、装置及应用

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180067811A1 (en) * 2016-09-07 2018-03-08 Microsoft Technology Licensing, Llc Automatic application error detection and rollback
US20180089040A1 (en) * 2016-09-27 2018-03-29 International Business Machines Corporation Rebuild rollback support in distributed sds systems
CN109189464A (zh) * 2018-07-11 2019-01-11 高新兴科技集团股份有限公司 一种版本管理的方法和设备
CN109271198A (zh) * 2018-08-16 2019-01-25 中国平安人寿保险股份有限公司 基于Docker容器的镜像打包方法、装置及电子设备
CN109391664A (zh) * 2017-08-11 2019-02-26 中国电信股份有限公司 用于多集群容器部署的系统和方法
CN110399134A (zh) * 2019-06-28 2019-11-01 绿漫科技有限公司 一种基于容器的快速部署方法及系统
CN111666080A (zh) * 2020-04-28 2020-09-15 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
CN111813601A (zh) * 2020-07-09 2020-10-23 中国工商银行股份有限公司 有状态分布式集群的微服务回滚方法及装置
CN111880832A (zh) * 2020-08-03 2020-11-03 上海嗨酷强供应链信息技术有限公司 一种基于docker容器化技术的镜像管理方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180067811A1 (en) * 2016-09-07 2018-03-08 Microsoft Technology Licensing, Llc Automatic application error detection and rollback
US20180089040A1 (en) * 2016-09-27 2018-03-29 International Business Machines Corporation Rebuild rollback support in distributed sds systems
CN109391664A (zh) * 2017-08-11 2019-02-26 中国电信股份有限公司 用于多集群容器部署的系统和方法
CN109189464A (zh) * 2018-07-11 2019-01-11 高新兴科技集团股份有限公司 一种版本管理的方法和设备
CN109271198A (zh) * 2018-08-16 2019-01-25 中国平安人寿保险股份有限公司 基于Docker容器的镜像打包方法、装置及电子设备
CN110399134A (zh) * 2019-06-28 2019-11-01 绿漫科技有限公司 一种基于容器的快速部署方法及系统
CN111666080A (zh) * 2020-04-28 2020-09-15 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
CN111813601A (zh) * 2020-07-09 2020-10-23 中国工商银行股份有限公司 有状态分布式集群的微服务回滚方法及装置
CN111880832A (zh) * 2020-08-03 2020-11-03 上海嗨酷强供应链信息技术有限公司 一种基于docker容器化技术的镜像管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王一涵: ""基于Docker的SQL并行查询优化研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 March 2020 (2020-03-15) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918096A (zh) * 2021-10-21 2022-01-11 城云科技(中国)有限公司 一种算法镜像包的上传方法、装置及应用
CN113918096B (zh) * 2021-10-21 2023-09-22 城云科技(中国)有限公司 一种算法镜像包的上传方法、装置及应用

Similar Documents

Publication Publication Date Title
EP3428811B1 (en) Database interface agent for a tenant-based upgrade system
CN107515776B (zh) 业务不间断升级方法、待升级节点和可读存储介质
CN110768833B (zh) 基于kubernetes的应用编排部署方法及装置
WO2021217871A1 (zh) 微服务集群部署方法、装置、计算机设备及存储介质
CN109542529B (zh) 基于函数名称的埋点方法、装置、计算机设备及存储介质
CN112118565A (zh) 多租户服务灰度发布方法、装置、计算机设备和存储介质
US8069441B2 (en) Method for constructing job operation environment
WO2019148722A1 (zh) 电子装置、数据迁移及调用方法及存储介质
US20120158795A1 (en) Entity triggers for materialized view maintenance
CN111464603B (zh) 一种服务器扩容方法及扩容系统
WO2022222438A1 (zh) 配置文件状态同步方法、装置、终端、服务器和存储介质
EP2674868A1 (en) Database update notification method
CN110825399A (zh) 一种应用程序的部署方法及装置
CN111240892A (zh) 数据备份方法及装置
CN112100152A (zh) 业务数据处理方法、系统、服务器和可读存储介质
CN112463304A (zh) 容器镜像的回滚方法、装置、计算机设备和存储介质
CN111966530A (zh) 应用系统灾备切换方法、装置、计算机设备和存储介质
CN112416394B (zh) 一种服务升级方法、装置、存储介质及电子设备
CN114416689A (zh) 数据迁移方法、装置、计算机设备、存储介质
CN115878195A (zh) 操作系统批量部署方法及装置、计算机设备及存储介质
CN109325057B (zh) 中间件管理方法、装置、计算机设备以及存储介质
CN108376104B (zh) 节点调度方法及装置、计算机可读存储介质
CN116893834B (zh) 负载更新方法、装置、系统、电子设备及可读存储介质
US8856065B2 (en) Information processing apparatus, document access method, and computer program
CN110197067B (zh) 文件查杀方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination