CN107590033B - 一种创建docker容器的方法、装置和系统 - Google Patents
一种创建docker容器的方法、装置和系统 Download PDFInfo
- Publication number
- CN107590033B CN107590033B CN201710800252.6A CN201710800252A CN107590033B CN 107590033 B CN107590033 B CN 107590033B CN 201710800252 A CN201710800252 A CN 201710800252A CN 107590033 B CN107590033 B CN 107590033B
- Authority
- CN
- China
- Prior art keywords
- target
- container
- rbd
- read
- doker
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种创建DOCKER容器的方法,属于数据处理技术领域。所述方法包括:当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据,按照预设的调度算法选择目标节点,将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点。采用本发明,可以提高DOCKER容器迁移的效率。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种创建DOCKER容器的方法、装置和系统。
背景技术
DOCKER是一种属于操作系统层面的,对进程进行封装隔离的虚拟化技术。隔离的进程独立于宿主和其它的隔离的进程,可以称其为DOCKER容器。
在CDN(内容分发网络,Content Delivery Network)系统中,DOCKER容器一般存在于各个节点设备中,用于支撑一个或多个网络业务。当某个DOCKER容器突发故障时,CDN系统的管理中心可以先保存该DOCKER容器的运行状态,生成DOCKER image(即容器镜像),这样,可以在新的节点设备上,基于上述容器镜像,再次创建DOCKER容器,从而实现dcoker容器迁移的处理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
一个DOCKER容器往往包括大量数据,如网络配置、系统文件、挂载信息等等,这样,在创建新的DOCKER容器前,往往需要花费大量时间来生成DOCKER image,故而DOCKER容器迁移的效率较低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种创建DOCKER容器的方法、装置和系统。所述技术方案如下:
第一方面,提供了一种创建DOCKER容器的方法,所述方法包括:
当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
按照预设的调度算法选择目标节点;
将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点。
可选的,所述方法还包括:
当检测到所述目标DOCKER容器的创建触发事件时,确定所述目标DOCKER容器对应的待部署节点;
生成所述目标DOCKER容器的配置文件,所述配置文件至少包括所述目标DOCKER容器的镜像标识、网络配置信息和内存占用量;
将所述目标DOCKER容器的配置文件发送至所述待部署节点,以使所述待部署节点根据所述配置文件创建所述目标DOCKER容器。
可选的,所述生成所述目标DOCKER容器的配置文件之后,还包括:
如果所述目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建所述目标RBD,并将所述目标RBD的RBD标识写入所述配置文件。
第二方面,提供了一种创建DOCKER容器的方法,所述方法包括:
接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识;
根据所述容器标识获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器。
可选的,所述根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,包括:
创建目标挂载目录,将所述目标DOCKER容器的只读层镜像挂载至所述目标挂载目录;
创建读写层目录,并将所述读写层目录挂载至所述目标挂载目录;
将所述目标RBD映射至本地,生成RBD设备目录,将所述RBD设备目录挂载至所述目标挂载目录;
基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
可选的,所述方法还包括:
如果所述目标RBD的RBD标识为空,或者所述目标RBD不存在,则根据所述目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
第三方面,提供了一种创建DOCKER容器的装置,所述装置包括:
第一确定模块,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
选择模块,用于按照预设的调度算法选择目标节点;
第一发送模块,用于将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点。
可选的,所述装置还包括:
第二确定模块,用于当检测到所述目标DOCKER容器的创建触发事件时,确定所述目标DOCKER容器对应的待部署节点;
生成模块,用于生成所述目标DOCKER容器的配置文件,所述配置文件至少包括所述目标DOCKER容器的镜像标识、网络配置信息和内存占用量;
第二发送模块,用于将所述目标DOCKER容器的配置文件发送至所述待部署节点,以使所述待部署节点根据所述配置文件创建所述目标DOCKER容器。
可选的,所述装置还包括:
创建模块,用于如果所述目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建所述目标RBD,并将所述目标RBD的RBD标识写入所述配置文件。
第四方面,提供了一种创建DOCKER容器的装置,所述装置包括:
接收模块,用于接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识;
获取模块,用于根据所述容器标识获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
创建模块,用于根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器。
可选的,所述创建模块,具体用于:
创建目标挂载目录,将所述目标DOCKER容器的只读层镜像挂载至所述目标挂载目录;
创建读写层目录,并将所述读写层目录挂载至所述目标挂载目录;
将所述目标RBD映射至本地,生成RBD设备目录,将所述RBD设备目录挂载至所述目标挂载目录;
基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
可选的,所述创建模块还用于:
如果所述目标RBD的RBD标识为空,或者所述目标RBD不存在,则根据所述目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
第五方面,提供了一种创建DOCKER容器的系统,所述系统包括调度设备和目标节点,其中:
所述调度设备,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;按照预设的调度算法选择所述目标节点;将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点;
所述目标节点,用于接收所述调度设备发送的所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识,根据所述容器标识获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器。
第六方面,提供了一种调度设备,所述调度设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的创建DOCKER容器的方法。
第七方面,提供了一种目标节点,其特征在于,所述目标节点包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第二方面所述的创建DOCKER容器的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,调度设备当检测到目标DOCKER容器出现故障时,确定目标DOCKER容器对应的目标RBD,其中,目标RBD存储有目标DOCKER容器的读写层数据,按照预设的调度算法选择目标节点,将目标DOCKER容器的容器标识和目标RBD的RBD标识发送给目标节点。这样,由于DOCKER容器的读写层数据存储在RBD中,当DOCKER容器出现故障时,调度设备可以及时选取目标节点,并使目标节点基于RBD中的读写层数据和DOCKER容器的只读层镜像,快速创建新的DOCKER容器,从而可以提高DOCKER容器迁移的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种网络框架示意图;
图2是本发明实施例提供的一种创建DOCKER容器的方法流程图;
图3是本发明实施例提供的一种目标挂载目录的示意图;
图4是本发明实施例提供的一种创建DOCKER容器的方法示意图;
图5是本发明实施例提供的一种创建DOCKER容器的装置结构示意图;
图6是本发明实施例提供的一种创建DOCKER容器的装置结构示意图;
图7是本发明实施例提供的一种创建DOCKER容器的装置结构示意图;
图8是本发明实施例提供的一种创建DOCKER容器的装置结构示意图;
图9是本发明实施例提供的一种调度设备/节点设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种创建DOCKER容器的方法,该方法可以由调度设备和节点设备共同实现。其中,调度设备可以CDN系统的中心管理设备或中心管理设备组,可以用于对CDN系统的各节点设备上的DOCKER容器进行调度管理。节点设备可以是CDN系统中每个节点服务器或者服务器组,每个节点设备上可以部署有多个DOCKER容器,每个DOCKER容器可以封装好的,用于支持不同网络业务的处理进程。上述调度设备中可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中的创建DOCKER容器的处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。同样,上述节点设备中可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中的创建DOCKER容器的处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。本发明实施例还包括RBD(Reliable Autonomic Distributed Object Store Block Devices,可靠的自主分布式对象存储块设备)存储集群以及DOCKER镜像库,其中,RBD存储集群可以是独立于上述调度设备和节点设备的共享存储系统,用于存储各个DOCKER容器的读写层数据,调度设备和节点设备均可以访问RBD存储集群,DOCKER镜像库可以是独立于上述调度设备和节点设备的镜像存储空间,用于存储各个DOCKER容器的只读层镜像,调度设备和节点设备均可以访问DOCKER镜像库,当然,在某种场景下,DOCKER镜像库也可以部署在上述调度设备处。本发明实施例具体网络架构可以如图1所示。
下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,内容可以如下:
步骤201,调度设备当检测到目标DOCKER容器出现故障时,确定目标DOCKER容器对应的目标RBD。
其中,目标RBD存储有目标DOCKER容器的读写层数据,读写层数据可以是目标DOCKER容器创建后,外界对目标DOCKER容器的所有修改数据。
在实施中,CDN系统中,DOCKER容器可以部署在每个节点设备(后续简称节点)上,用于支持不同网络业务。每个节点上可以运行着一个用于收集DOCKER容器的状态数据的代理程序,这些代理程序可以周期性地获取相应节点上各个DOCKER容器的状态数据,然后将这些状态数据反馈给调度设备,调度设备则可以以此来判断DOCKER容器的运行状态是否正常。当调度设备发现某个DOCKER容器(即目标DOCKER容器)出现故障时,调度设备则需要对目标DOCKER容器进行迁移、恢复处理,即基于目标DOCKER容器的现有数据,在新的节点上重新建立DOCKER容器。故而则可以先查找DOCKER容器的读写层数据,确定出目标DOCKER容器对应的目标RBD。
步骤202,调度设备按照预设的调度算法选择目标节点。
在实施中,在调度设备发现目标DOCKER容器出现故障后,可以按照预设的调度算法选择出一个合适的健康节点(即目标节点),以便在该目标节点上重新部署目标DOCKER容器。此处,预设的调度算法可以多种多样,如可以在其他运行状态正常的节点中轮流选择或者随机选择目标节点,也可以先获取其他运行状态正常的节点的负载状况,然后选择负载最低的节点作为目标节点,还可以直接选择预先指定的节点作为目标节点(如预先指定节点A上的容器故障时,迁移至节点B上进行恢复)。
步骤203,调度设备将目标DOCKER容器的容器标识和目标RBD的RBD标识发送给目标节点。
在实施中,调度设备选择出目标节点后,可以向该目标节点发送目标DOCKER容器的创建请求,该创建请求中可以包含有目标DOCKER容器的容器标识,和在步骤201中确定出的目标RBD的RBD标识。此处,需要对DOCKER驱动进行二次开发,修改layer Store的CreateRW Layer()函数,在其中增加一个string类型参数“RBD name”,用于传递RBD标识,具体可以通过“Labels”项来传递RBD标识“Labels”:{"RBD name":"RBD-0"}。
步骤204,目标节点接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识。
在实施中,在调度设备向目标节点发送目标DOCKER容器的创建请求后,目标节点可以接受到相应的目标DOCKER容器的容器标识和目标RBD的RBD标识。
步骤205,目标节点根据容器标识获取目标DOCKER容器的只读层镜像,并根据RBD标识从RBD存储集群中获取目标RBD。
其中,只读层镜像可以为创建一个DOCKER容器所需的初始系统文件,后续对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中。
在实施中,目标节点接收到目标DOCKER容器的容器标识和目标RBD的RBD标识后,可以根据容器标识获取目标DOCKER容器的只读层镜像。具体的,目标节点可以先在本地查找是否已经存储有目标DOCKER容器的只读层镜像,如果已存储,则可以直接获取本地存储的只读层镜像,如果未存储,则可以访问DOCKER镜像库,在其中查找并下载目标DOCKER容器的只读层镜像。同时,目标节点还可以根据RBD标识从RBD存储集群中查找到目标DOCKER容器对应的RBD(即目标RBD)。
步骤206中,目标节点根据目标DOCKER容器的只读层镜像和目标RBD,在本地创建新的DOCKER容器。
在实施中,将只读层镜像实例化成DOCKER容器时,DOCKER容器一般就包含了多个只读层和一个读写层。只读层即为原来只读层镜像的系统文件内容,而读写层则是覆盖于只读层之上,后续对DOCKER容器的所有用户操作都在只读层进行。这样,目标节点获取到目标DOCKER容器的只读层镜像,并查找到目标RBD之后,可以先基于只读层镜像创造新的DOCKER容器,然后将目标RBD作为新的DOCKER容器的读写层,从而实现了目标DOCKER容器的只读层数据和读写层数据的还原。这样,在经过后续配置网络环境、初始化内部运行环境等处理,即完成了将目标DOCKER容器迁移至目标节点并恢复的处理。
可选的,本实施例选取了AUFS(advanced multi-layered unification filesystem,高级多层统一文件系统)作为DOCKER的存储驱动,以union mount的方式创建容器,相应的,步骤206的处理可以如下:创建目标挂载目录,将目标DOCKER容器的只读层镜像挂载至目标挂载目录;创建读写层目录,并将读写层目录挂载至目标挂载目录;将目标RBD映射至本地,生成RBD设备目录,将RBD设备目录挂载至目标挂载目录;基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
其中,挂载是指将A目录挂接到一个已存在的B目录上,这样,可以通过访问上述B目录来实现A目录的访问。
在实施中,目标节点在获取到目标DOCKER容器的只读层镜像之后,可以先在本地创建新的DOCKER容器对应的目标挂载目录,然后将只读层镜像中所有镜像层目录以只读权限,逐层挂载到该目标挂载目录,再创建一个代表container layer的新目录(即读写层目录),并将该读写层目录以读写权限挂载到上述目标挂载目录的最上层。具体可参考图3,“/var/lib/DOCKER/AUFS/diff/91e54dfb1179”等只读层镜像和读写层目录“/var/lib/DOCKER/AUFS/diff/c283f215c57f”共同挂载至目标挂载目录“/var/lib/DOCKER/AUFS/mnt/c283f215c57f”下。同时,目标节点还可以将目标RBD映射至本地,生成RBD设备目录(即将RBD设备目录与目标RBD建立关联关系,这样,RBD设备目录中的任何操作将会同步至目标RBD中),然后可以将RBD设备目录也挂载至上述目标挂载目录,从而新的DOCKER容器可以继承目标DOCKER容器的读写层数据。最后,目标节点可以在进行挂载处理后的目标挂载目录的基础上,进行后续创建DOCKER容器的处理。
可选的,对于无RBD的情况,在迁移DOCKER容器时,可以直接根据原DOCKER容器的只读层镜像创建新的DOCKER容器,相应的处理可以如下:如果目标RBD的RBD标识为空,或者目标RBD不存在,则根据目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
在实施中,目标节点接收到目标DOCKER容器的容器标识和目标RBD的RBD标识后,如果发现目标RBD的RBD标识为空,或者在RBD存储集群中未查找到目标RBD,则不使用RBD创建DOCKER容器,进而可以根据目标DOCKER容器的只读层镜像在本地创建新的DOCKER容器。此处,需要对AUFS驱动进行二次开发,即利用Create()函数获取用于传递RBD标识的string类型参数“RBD name”,从而判断RBD标识是否为空,或者对应的RBD是否存在。
本实施例还提供了一种创建目标DOCKER容器的处理流程,如图4所示,具体可以如下:
步骤401,调度设备当检测到目标DOCKER容器的创建触发事件时,确定目标DOCKER容器对应的待部署节点。
在实施中,调度设备可以用来管理DOCKER容器的创建处理,当其检测到目标DOCKER容器的创建触发事件时,则可以先确定该目标DOCKER容器对应的待部署节点,即确定需要在哪个节点上部署该DOCKER容器。此处,创建触发事件可以存在多种,例如,可以是接收到技术人员输入的DOCKER容器的创建指令,或者是调度设备检测到新增业务,自动判断出需要建立DOCKER容器。
步骤402,调度设备生成目标DOCKER容器的配置文件,配置文件至少包括目标DOCKER容器的镜像标识、网络配置信息和内存占用量。
在实施中,当需要创建目标DOCKER容器时,调度设备可以确定该目标DOCKER容器对应的只读层镜像的镜像标识,和分配给目标DOCKER容器的IP地址、网关号等网络配置信息,以及目标DOCKER容器所需的内存占用量等等。然后调度设备可以根据上述数据生成目标DOCKER容器的配置文件。
步骤403,调度设备将目标DOCKER容器的配置文件发送至待部署节点,以使待部署节点根据配置文件创建目标DOCKER容器。
在实施中,在生成目标DOCKER容器的配置文件后,调度设备可以将上述配置文件发送至步骤401中确定出的待部署节点。这样,待部署节点可以基于接收到的配置文件,创建目标DOCKER容器。具体的,待部署节点可以先根据配置文件中的镜像标识,获取目标DOCKER容器的只读层镜像,然后按照内存占用量分配一定的内存空间,建立目标DOCKER容器的挂载目录,进而可以将只读层镜像挂载至该挂载目录中,同时创建读写层目录,并将读写层目录也挂载至上述挂载目录中。最后,可以基于网络配置信息对目标DOCKER容器进行网络配置,然后进行后续创建目标DOCKER容器的处理。
可选的,在创建过程中,如果发现目标DOCKER容器需要创建RBD,则在步骤402之后,还可以存在如下处理:如果目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建目标RBD,并将目标RBD的RBD标识写入配置文件。
在实施中,在生成目标DOCKER容器的配置文件后,调度设备还可以判断目标DOCKER容器是否满足RBD创建需求。具体的,RBD创建需求可以由技术人员进行设定,并将设定的标准存储至调度设备中,如当目标DOCKER容器属于A类DOCKER容器时,即满足RBD创建需求;或者,技术人员可以在目标DOCKER容器创建触发时,直接指示是否需要为目标DOCKER容器创建RBD。如果目标DOCKER容器满足RBD创建需求,调度设备则可以在RBD存储集群中创建目标RBD,并将目标RBD的RBD标识写入前述配置文件中。
这样,在待部署节点根据配置文件创建目标DOCKER容器时,可以先查找到目标RBD,然后将目标RBD映射至本地,生成RBD设备目录,在将RBD设备目录挂载到目标DOCKER容器的读写层目录,由此一来,目标DOCKER容器的读写层数据都将存储在RBD设备目录对应的RBD里面。需要说明的是,此处需要对DOCKER驱动进行二次开发,修改创建DOCKER容器时的动作规则,加入RBD的检测、映射和挂载等处理。
本发明实施例中,调度设备当检测到目标DOCKER容器出现故障时,确定目标DOCKER容器对应的目标RBD,其中,目标RBD存储有目标DOCKER容器的读写层数据,按照预设的调度算法选择目标节点,将目标DOCKER容器的容器标识和目标RBD的RBD标识发送给目标节点。这样,由于DOCKER容器的读写层数据存储在RBD中,当DOCKER容器出现故障时,调度设备可以及时选取目标节点,并使目标节点基于RBD中的读写层数据和DOCKER容器的只读层镜像,快速创建新的DOCKER容器,从而可以提高DOCKER容器迁移的效率。
基于相同的技术构思,本发明实施例还提供了一种创建DOCKER容器的装置,如图5所示,该装置包括:
第一确定模块501,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
选择模块502,用于按照预设的调度算法选择目标节点;
第一发送模块503,用于将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点。
可选的,如图6所示,所述装置还包括:
第二确定模块504,用于当检测到所述目标DOCKER容器的创建触发事件时,确定所述目标DOCKER容器对应的待部署节点;
生成模块505,用于生成所述目标DOCKER容器的配置文件,所述配置文件至少包括所述目标DOCKER容器的镜像标识、网络配置信息和内存占用量;
第二发送模块506,用于将所述目标DOCKER容器的配置文件发送至所述待部署节点,以使所述待部署节点根据所述配置文件创建所述目标DOCKER容器。
可选的,如图7所示,所述装置还包括:
创建模块507,用于如果所述目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建所述目标RBD,并将所述目标RBD的RBD标识写入所述配置文件。
基于相同的技术构思,本发明实施例还提供了一种创建DOCKER容器的装置,如图8所示,该装置包括:
接收模块801,用于接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识;
获取模块802,用于根据所述容器标识获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
创建模块803,用于根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器。
可选的,所述创建模块803,具体用于:
创建目标挂载目录,将所述目标DOCKER容器的只读层镜像挂载至所述目标挂载目录;
创建读写层目录,并将所述读写层目录挂载至所述目标挂载目录;
将所述目标RBD映射至本地,生成RBD设备目录,将所述RBD设备目录挂载至所述目标挂载目录;
基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
可选的,所述创建模块803还用于:
如果所述目标RBD的RBD标识为空,或者所述目标RBD不存在,则根据所述目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
本发明实施例中,调度设备当检测到目标DOCKER容器出现故障时,确定目标DOCKER容器对应的目标RBD,其中,目标RBD存储有目标DOCKER容器的读写层数据,按照预设的调度算法选择目标节点,将目标DOCKER容器的容器标识和目标RBD的RBD标识发送给目标节点。这样,由于DOCKER容器的读写层数据存储在RBD中,当DOCKER容器出现故障时,调度设备可以及时选取目标节点,并使目标节点基于RBD中的读写层数据和DOCKER容器的只读层镜像,快速创建新的DOCKER容器,从而可以提高DOCKER容器迁移的效率。
需要说明的是:上述实施例提供的创建DOCKER容器的装置在创建DOCKER容器时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的创建DOCKER容器的装置与创建DOCKER容器的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本发明实施例还提供了一种创建DOCKER容器的系统,所述系统包括调度设备和目标节点,其中:
所述调度设备,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;按照预设的调度算法选择所述目标节点;将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点;
所述目标节点,用于接收所述调度设备发送的所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识,根据所述容器标识获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器。
本发明实施例中,调度设备当检测到目标DOCKER容器出现故障时,确定目标DOCKER容器对应的目标RBD,其中,目标RBD存储有目标DOCKER容器的读写层数据,按照预设的调度算法选择目标节点,将目标DOCKER容器的容器标识和目标RBD的RBD标识发送给目标节点。这样,由于DOCKER容器的读写层数据存储在RBD中,当DOCKER容器出现故障时,调度设备可以及时选取目标节点,并使目标节点基于RBD中的读写层数据和DOCKER容器的只读层镜像,快速创建新的DOCKER容器,从而可以提高DOCKER容器迁移的效率。
图9是本发明实施例提供的调度设备/节点设备的结构示意图。该调度设备/节点设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务端中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在调度设备/节点设备900上执行存储介质930中的一系列指令操作。
调度设备/节点设备900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,一个或一个以上键盘956,和/或,一个或一个以上操作系统941,例如Windows Server TM,Mac OS XTM,Unix TM,LinuxTM,FreeBSD TM等等。
调度设备/节点设备900可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行上述创建DOCKER容器的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种创建DOCKER容器的方法,其特征在于,所述方法包括:
当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
按照预设的调度算法选择目标节点;
将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点,以使所述目标节点:
根据所述容器标识判断本地是否存储有所述目标DOCKER容器的只读层镜像,若存在,则从本地获取所述目标DOCKER容器的只读层镜像,若不存在,则从DOCKER镜像库中获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述只读层镜像为创建一个DOCKER容器所需的初始系统文件,对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中;
根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,将所述目标RBD作为所述新的DOCKER容器的读写层。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述目标DOCKER容器的创建触发事件时,确定所述目标DOCKER容器对应的待部署节点;
生成所述目标DOCKER容器的配置文件,所述配置文件至少包括所述目标DOCKER容器的镜像标识、网络配置信息和内存占用量;
将所述目标DOCKER容器的配置文件发送至所述待部署节点,以使所述待部署节点根据所述配置文件创建所述目标DOCKER容器。
3.根据权利要求2所述的方法,其特征在于,所述生成所述目标DOCKER容器的配置文件之后,还包括:
如果所述目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建所述目标RBD,并将所述目标RBD的RBD标识写入所述配置文件。
4.一种创建DOCKER容器的方法,其特征在于,所述方法包括:
接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识;
根据所述容器标识判断本地是否存储有所述目标DOCKER容器的只读层镜像,若存在,则从本地获取所述目标DOCKER容器的只读层镜像,若不存在,则从DOCKER镜像库中获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据,所述只读层镜像为创建一个DOCKER容器所需的初始系统文件,对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中;
根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,将所述目标RBD作为所述新的DOCKER容器的读写层。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,包括:
创建目标挂载目录,将所述目标DOCKER容器的只读层镜像挂载至所述目标挂载目录;
创建读写层目录,并将所述读写层目录挂载至所述目标挂载目录;
将所述目标RBD映射至本地,生成RBD设备目录,将所述RBD设备目录挂载至所述目标挂载目录;
基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果所述目标RBD的RBD标识为空,或者所述目标RBD不存在,则根据所述目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
7.一种创建DOCKER容器的装置,其特征在于,所述装置包括:
第一确定模块,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据;
选择模块,用于按照预设的调度算法选择目标节点;
第一发送模块,用于将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点,以使所述目标节点:
根据所述容器标识判断本地是否存储有所述目标DOCKER容器的只读层镜像,若存在,则从本地获取所述目标DOCKER容器的只读层镜像,若不存在,则从DOCKER镜像库中获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述只读层镜像为创建一个DOCKER容器所需的初始系统文件,对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中;
根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,将所述目标RBD作为所述新的DOCKER容器的读写层。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于当检测到所述目标DOCKER容器的创建触发事件时,确定所述目标DOCKER容器对应的待部署节点;
生成模块,用于生成所述目标DOCKER容器的配置文件,所述配置文件至少包括所述目标DOCKER容器的镜像标识、网络配置信息和内存占用量;
第二发送模块,用于将所述目标DOCKER容器的配置文件发送至所述待部署节点,以使所述待部署节点根据所述配置文件创建所述目标DOCKER容器。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
创建模块,用于如果所述目标DOCKER容器满足RBD创建需求,则在RBD存储集群中创建所述目标RBD,并将所述目标RBD的RBD标识写入所述配置文件。
10.一种创建DOCKER容器的装置,其特征在于,所述装置包括:
接收模块,用于接收调度设备发送的目标DOCKER容器的容器标识和目标RBD的RBD标识;
获取模块,用于根据所述容器标识判断本地是否存储有所述目标DOCKER容器的只读层镜像,若存在,则从本地获取所述目标DOCKER容器的只读层镜像,若不存在,则从DOCKER镜像库中获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据,所述只读层镜像为创建一个DOCKER容器所需的初始系统文件,对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中;
创建模块,用于根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,将所述目标RBD作为所述新的DOCKER容器的读写层。
11.根据权利要求10所述的装置,其特征在于,所述创建模块,具体用于:
创建目标挂载目录,将所述目标DOCKER容器的只读层镜像挂载至所述目标挂载目录;
创建读写层目录,并将所述读写层目录挂载至所述目标挂载目录;
将所述目标RBD映射至本地,生成RBD设备目录,将所述RBD设备目录挂载至所述目标挂载目录;
基于进行挂载处理后的目标挂载目录,在本地创建新的DOCKER容器。
12.根据权利要求10所述的装置,其特征在于,所述创建模块还用于:
如果所述目标RBD的RBD标识为空,或者所述目标RBD不存在,则根据所述目标DOCKER容器的只读层镜像,在本地创建新的DOCKER容器。
13.一种创建DOCKER容器的系统,其特征在于,所述系统包括调度设备和目标节点,其中:
所述调度设备,用于当检测到目标DOCKER容器出现故障时,确定所述目标DOCKER容器对应的目标RBD;按照预设的调度算法选择所述目标节点;将所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识发送给所述目标节点;
所述目标节点,用于接收所述调度设备发送的所述目标DOCKER容器的容器标识和所述目标RBD的RBD标识,根据所述容器标识判断本地是否存储有所述目标DOCKER容器的只读层镜像,若存在,则从本地获取所述目标DOCKER容器的只读层镜像,若不存在,则从DOCKER镜像库中获取所述目标DOCKER容器的只读层镜像,并根据所述RBD标识从RBD存储集群中查找所述目标RBD,根据所述目标DOCKER容器的只读层镜像和所述目标RBD,在本地创建新的DOCKER容器,将所述目标RBD作为所述新的DOCKER容器的读写层;
其中,所述目标RBD存储有所述目标DOCKER容器的读写层数据,所述只读层镜像为创建一个DOCKER容器所需的初始系统文件,对DOCKER容器的修改操作均存储在DOCKER容器对应的RBD中。
14.一种调度设备,其特征在于,所述调度设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至3任一所述的创建DOCKER容器的方法。
15.一种目标节点,其特征在于,所述目标节点包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求4至6任一所述的创建DOCKER容器的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710800252.6A CN107590033B (zh) | 2017-09-07 | 2017-09-07 | 一种创建docker容器的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710800252.6A CN107590033B (zh) | 2017-09-07 | 2017-09-07 | 一种创建docker容器的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107590033A CN107590033A (zh) | 2018-01-16 |
CN107590033B true CN107590033B (zh) | 2021-06-22 |
Family
ID=61050971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710800252.6A Expired - Fee Related CN107590033B (zh) | 2017-09-07 | 2017-09-07 | 一种创建docker容器的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590033B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762882B (zh) * | 2018-04-02 | 2021-12-21 | 杭州朗和科技有限公司 | 一种Docker容器的迁移方法、迁移装置、介质和计算设备 |
CN110119377B (zh) * | 2019-04-24 | 2021-01-15 | 华中科技大学 | 面向Docker容器的在线迁移系统实现和优化方法 |
CN110457555A (zh) * | 2019-06-24 | 2019-11-15 | 平安国际智慧城市科技股份有限公司 | 基于Docker的数据采集方法、装置及计算机设备、存储介质 |
CN110489126B (zh) * | 2019-08-08 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 编译任务的执行方法和装置、存储介质及电子装置 |
CN112269694B (zh) * | 2020-10-23 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种管理节点确定方法、装置、电子设备及可读存储介质 |
CN113742081A (zh) * | 2021-09-10 | 2021-12-03 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于容器技术的分布式任务迁移方法及分布式系统 |
CN116016498A (zh) * | 2021-10-21 | 2023-04-25 | 中兴通讯股份有限公司 | Cdn网元容器配置方法、读写方法、装置、设备及存储介质 |
CN116339920B (zh) * | 2023-03-27 | 2024-03-15 | 北京天融信网络安全技术有限公司 | 基于云平台的信息处理方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335214A (zh) * | 2015-11-12 | 2016-02-17 | 国云科技股份有限公司 | 一种虚拟机故障检测和恢复的方法 |
CN105511943B (zh) * | 2015-12-03 | 2019-04-12 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
CN107431720B (zh) * | 2015-12-31 | 2019-11-29 | 华为技术有限公司 | 镜像部署方法和装置 |
CN106446275A (zh) * | 2016-10-21 | 2017-02-22 | 国云科技股份有限公司 | 一种支持文件系统扩容的容器实现方法 |
-
2017
- 2017-09-07 CN CN201710800252.6A patent/CN107590033B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN107590033A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590033B (zh) | 一种创建docker容器的方法、装置和系统 | |
CN111966305B (zh) | 持久卷分配方法、装置、计算机设备和存储介质 | |
US8104038B1 (en) | Matching descriptions of resources with workload requirements | |
CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
US9692666B2 (en) | Container manager | |
US5687372A (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
CN111930473B (zh) | 在容器云上部署图像识别服务的方法与设备 | |
CN110109649B (zh) | 针对Web服务的容器控制方法、装置和容器系统 | |
US10732995B2 (en) | Distributed job manager for stateful microservices | |
EP3037964A1 (en) | Virtual application manager in a cloud computing environment | |
CN108073423A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
US20220329651A1 (en) | Apparatus for container orchestration in geographically distributed multi-cloud environment and method using the same | |
CN114884838A (zh) | Kubernetes组件的监控方法及服务器 | |
US20230315584A1 (en) | Backing up data for a namespace assigned to a tenant | |
CN111857951A (zh) | 容器化部署平台及部署方法 | |
EP0747814A1 (en) | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment | |
CN113391875A (zh) | 容器部署方法与装置 | |
EP0747812A2 (en) | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment | |
CN112667711B (zh) | 一种MySQL只读实例管理方法、系统及计算机可读介质 | |
CN109062580B (zh) | 一种虚拟化环境部署方法和部署装置 | |
WO2021248972A1 (zh) | 默认网关管理方法、网关管理器、服务器及存储介质 | |
US20130318102A1 (en) | Data Handling in a Cloud Computing Environment | |
CN115344361A (zh) | 计算节点的管理方法及管理系统 | |
CN109343959B (zh) | 多用户计算和IO密集型SaaS系统及应用方法 | |
WO2020029995A1 (en) | Application upgrading through sharing dependencies |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210622 |
|
CF01 | Termination of patent right due to non-payment of annual fee |