CN109901908A - 销毁docker容器的方法、装置、设备和介质 - Google Patents
销毁docker容器的方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN109901908A CN109901908A CN201711307412.XA CN201711307412A CN109901908A CN 109901908 A CN109901908 A CN 109901908A CN 201711307412 A CN201711307412 A CN 201711307412A CN 109901908 A CN109901908 A CN 109901908A
- Authority
- CN
- China
- Prior art keywords
- docker container
- destroyed
- docker
- resource information
- container
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种销毁docker容器的方法、装置、设备和介质。该方法包括:创建docker容器与docker容器占用的资源信息的双向链接指针;获取docker容器的资源信息;获取依赖于docker容器的资源信息的其他docker容器;构成完整关系视图;按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器。根据本发明实施例提供的销毁docker容器的方法、装置、设备和介质,实现了对docker容器以及docker容器占用资源的自动销毁,提高了销毁的准确率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种销毁docker容器的方法、装置、设备和计算机可读存储介质。
背景技术
docker是一个开源的应用容器引擎,开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,docker容器完全使用沙箱机制,相互之间不会有任何接口。
现阶段销毁用户创建的docker容器,实际上是调用docker接口的相关命令,将指定名称或者标识(ID)的容器进程停止并删除。在docker容器销毁时,该docker容器占用的cpu资源、内存资源、网络端口映射等资源一并释放,但该销毁操作并未涉及docker容器创建时所依赖的本地镜像库的本地库镜像文件和配置信息,配置信息包括网络(network)信息和卷文件(volume)等相关资源。
那么,无用本地库镜像文件、无用配置信息占用有限的存储资源。也就是说,与销毁docker容器相关的配置信息一直存在于配置目录下,造成配置目录结构不清晰,且呈无限扩大化的趋势。若手工删除这些信息,则必须手工建立销毁容器、当前运行容器、当前停止容器与这些资源之间的关系图,然后再选择与当前正在运行容器无关的镜像文件和配置信息,以进行手工删除,工作量大,导致误操作。
发明内容
本发明实施例提供了一种销毁docker容器的方法、装置、设备和计算机可读存储介质,可以自动销毁docker容器,并提高销毁的准确性。
根据本发明实施例的一方面,提供一种销毁docker容器的方法,该方法包括:
创建docker容器与docker容器占用的资源信息的双向链接指针;
根据docker容器的标识和docker容器的双向链接指针中正向链接指针,获取docker容器的资源信息;
依据docker容器的资源信息和docker容器的资源信息的双向链接指针中反向链接指针,获取依赖于docker容器的资源信息的其他docker容器;
基于docker容器的资源信息和依赖于docker容器的资源信息的其他docker容器,构成完整关系视图;
按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器。
在一个实施例中,创建docker容器与docker容器占用的资源信息的双向链接指针,包括:
依据创建命令,创建docker容器与docker容器占用的资源信息的双向链接指针并追加指针属性,创建命令包括本地库镜像参数,指针属性包括本地库镜像文件资源信息。
在一个实施例中,根据docker容器的标识和docker容器的双向链接指针中正向链接指针,获取docker容器的资源信息,包括:
根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息;
docker容器的双向链接指针中正向链接指针的数目减一,将下一个正向链接指针作为当前正向链接指针;
当前正向链接指针并非唯一,则继续根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息,直到当前正向链接指针是唯一的正向链接指针。
在一个实施例中,依据docker容器的资源信息和docker容器的资源信息的双向链接指针中反向链接指针,获取依赖于docker容器的资源信息的其他docker容器,包括:
依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器;
docker容器的资源信息的双向链接指针中反向链接指针的数目减一,将下一个反向链接指针作为当前反向链接指针;
当前反向链接指针并非唯一,则继续依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器,直到当前反向链接指针是唯一反向链接指针。
在一个实施例中,按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器,包括:
按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针;
依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息;
将唯一的待销毁docker容器的资源信息移入待销毁集合,然后更新销毁docker容器的资源信息的数目和更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息,直到遍历所有待销毁docker容器的当前双向链接指针;
销毁待销毁docker容器和待销毁集合中的元素。
在一个实施例中,按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器,包括:
按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针;
依据待销毁docker容器的当前双向链接指针中正向链接指针,得到当前待销毁docker容器的资源信息;
根据当前待销毁docker容器的资源信息,更新待销毁容器的资源信息集合;
根据当前待销毁docker容器的资源信息和待销毁docker容器的当前双向链接指针中反向链接指针,确定待冻结容器;
更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针中正向链接指针,得到当前待销毁docker容器的资源信息,直到遍历待销毁docker容器的双向链接指针;
销毁待销毁docker容器、待销毁容器的资源信息集合以及冻结待冻结容器。
在一个实施例中,根据当前待销毁docker容器的资源信息和待销毁docker容器的当前双向链接指针中反向链接指针,确定待冻结容器,包括:
在待销毁docker容器的当前双向链接指针中反向链接指针中选择一个反向链接指针作为待处理反向链接指针;
根据当前待销毁docker容器的资源信息和待处理反向链接指针,获取依赖于当前待销毁docker容器的资源信息的相关docker容器;
利用已删除待销毁docker容器的相关docker容器,更新待冻结容器;
在待销毁docker容器的当前双向链接指针中反向链接指针中选择下一个反向链接指针作为待处理反向链接指针,直至遍历所有待销毁docker容器的当前双向链接指针中反向链接指针。
根据本发明实施例的另一方面,提供一种销毁docker容器的装置,该装置包括:
双向链接指针创建模块,用于创建docker容器与docker容器占用的资源信息的双向链接指针;
资源信息获取模块,用于根据docker容器的标识和docker容器的双向链接指针中正向链接指针,获取docker容器的资源信息;
容器获取模块,用于依据docker容器的资源信息和docker容器的资源信息的双向链接指针中反向链接指针,获取依赖于docker容器的资源信息的其他docker容器;
完整关系视图构建模块,用于基于docker容器的资源信息和依赖于docker容器的资源信息的其他docker容器,构成完整关系视图;
销毁模块,用于按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器。
根据本发明实施例的再一方面,提供一种销毁docker容器的设备,该设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现本发明实施例提供的销毁docker容器的方法。
根据本发明实施例的再一方面,提供一种计算机存储介质,该计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现本发明实施例提供的销毁docker容器的方法。
根据本发明实施例中的销毁docker容器的方法、装置、设备和计算机存储介质,通过利用在docker容器与该容器占用的资源信息之间创建的双向链接指针,构建docker容器占用的资源信息以及依赖于该资源信息的其他容器之间的完整关系视图,按照预定的销毁策略及该完整关系视图可以实现对docker容器的自动销毁,提高了销毁的准确性。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明其中,相同或相似的附图标记表示相同或相似的特征。
图1示出本发明一实施例的销毁docker容器的系统架构示意图;
图2示出根据本发明一实施例提供的销毁docker容器的方法的流程示意图;
图3示出本发明一实施例中创建docker容器与docker容器占用的资源信息的双向链接指针的流程示意图;
图4为本发明一实施例中docker容器与docker容器所占用的资源信息之间的双向链接指针的示意图;
图5示出本发明一实施例的构建docker容器与docker容器所占用的资源信息的完整关系视图的流程示意图;
图6示出本发明一实施例的销毁docker容器的流程示意图;
图7示出本发明另一实施例的销毁第一docker容器后的关系视图;
图8出本发明另一实施例的销毁第二docker容器和待销毁集合中的资源信息后的关系视图;
图9示出本发明一实施例的强制销毁docker容器的流程示意图;
图10示出本发明另一实施例的强制销毁第一docker容器后的关系视图;
图11示出了根据本发明一实施例提供的销毁docker容器的装置的结构示意图;
图12示出根据本发明一实施例的销毁docker容器的设备的硬件结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
图1示出本发明一实施例的销毁docker容器的系统架构100示意图。如图1所示,该系统包括:docker客户端、至少一个docker容器、docker守护进程、完整关系视图构建模块和销毁模块。其中,docker容器、docker守护进程、完整关系视图构建模块和销毁模块均在宿主机上运行。在本发明的实施例中,docker容器的个数不做具体限制。
在本发明的实施例中,管理员利用docker客户端输入创建docker容器的命令,docker客户端转发该创建命令至docker守护进程,其中创建的docker容器可以为一个或一个以上。创建命令中包含docker容器所占用的资源信息的参数。其中,docker容器所占用的资源信息包括本地库镜像文件资源信息,还可以包括配置资源信息等信息。其中,配置资源信息包括网络资源信息和卷文件资源信息。
docker守护进程利用链接指针算法和创建命令建立任一docker容器与该容器的占用的资源信息之间的双向链接指针,并追加指针属性。其中,指针属性包括本地库镜像文件资源信息,还可以包括配置信息资源信息。
完整关系视图构建模块根据管理员输入的任一docker容器的标识,读取该docker容器的双向链接指针,并根据docker容器的双向链接指针中的正向链接指针,获取任一docker容器占用的资源信息。进一步的,完整关系视图构建模块依据获取的任一docker容器的资源信息和该docker容器的资源信息的双向链接指针中的反向链接指针,获取依赖于该docker容器的资源信息的其他docker容器,从而构建所有docker容器占用的资源信息和依赖于该资源信息的其他docker容器之间的完整关系视图。
销毁模块根据管理员输入的待销毁的docker容器的标识以及上述的完整关系视图遍历待销毁docker容器的双向链接指针,并结合预设的销毁策略销毁待销毁docker容器。
本发明实施例的销毁docker容器的方法,通过利用创建的docker容器与该容器依赖的资源信息之间的双向链接指针,构建所有docker容器与所有docker容器占用的资源信息之间的完整关系视图,根据该完整关系视图以及预设的销毁策略,实现对任一docker容器的自动销毁。同时实现对docker容器销毁时,对docker容器所占用的资源信息进行统一的控制与管理,提高了docker容器以及docker容器所占用的资源信息销毁的准确率与效率。
下面首先结合附图对本发明实施例提供的销毁docker容器的方法进行详细说明。
图2示出根据本发明一实施例提供的销毁docker容器的方法的流程示意图。如图2所示,本实施例中的销毁docker容器的方法200包括以下步骤:
步骤S101,创建docker容器与docker容器占用的资源信息的双向链接指针。
在本发明的实施例中,图3示出本发明一实施例中创建docker容器与docker容器占用的资源信息之间的双向链接指针的流程示意图,如图3所示,步骤S101包括以下步骤:
步骤S201,初始化各资源信息的计数器。
在本发明的实施例中,为了对docker容器占用的资源信息进行统一的控制和管理,因此在创建docker容器之前,首先将用于创建docker容器的资源信息的计数器初始化为0。
其中,docker容器占用的资源信息包括本地库镜像文件、网络信息和卷文件等相关资源。
作为一个具体示例,用于创建docker容器的资源信息包括第一本地库镜像文件、第一网络信息、第一卷文件、第二本地库镜像文件、第二网络信息、第二卷文件、第三本地库镜像文件、第三网络信息和第三卷文件。其中,在创建新的docker容器之前,上述9个资源信息的计数器结果均初始化为0。
步骤S202,管理员发起docker容器的创建操作。
在本发明的实施例中,docker容器的创建操作通过管理员输入创建命令进行。其中,创建命令中包含本地库镜像参数。可选的,创建命令还可以包括网络信息参数和卷文件参数等。
作为一个具体示例,管理员发起创建第一docker容器的创建命令,创建命令中包含第一本地库镜像文件的参数、第一网络信息的参数和第一卷文件的参数。
步骤S203,链接指针算法根据docker容器创建命令参数解析出该容器占用的资源信息。
作为一个具体示例,链接指针算法根据创建命令中的参数可以得出第一docker容器所占用的资源信息为第一本地库镜像文件、第一网络信息和第一卷文件。
步骤S204,链接指针算法创建docker容器与该docker容器占用的资源信息之间的双向链接指针,并追加指针属性。
在本发明的实施例中,指针属性为指针指向的资源的性质,包括本地库镜像文件资源信息和配置文件资源信息。
作为一个具体示例,在创建第一docker容器时,利用链接指针算法创建第一docker容器分别与第一本地库镜像文件、第一网络信息、第一卷文件之间的双向链接指针。其中,第一docker容器与第一本地库镜像文件之间的双向链接指针的指针属性为本地库镜像文件资源信息,第一docker容器与第一网络信息之间的双向链接指针的指针属性为网络资源信息,第一docker容器与第一卷文件之间的双向链接指针的指针属性为卷文件资源信息。
步骤S205,判断资源信息是否有链接指针的创建。
步骤S206,若存在docker容器与任一资源信息之间进行双向链接指针的创建,则该资源信息的计数器增加1。
作为一个具体的示例,由于创建的第一docker容器占用的资源信息为第一本地库镜像文件、第一网络信息和第一卷文件,因此第一docker容器与第一本地库镜像文件、第一网络信息、第一卷文件之间均有双向指针链接的创建,因此第一本地库镜像文件的计数器、第一网络信息的计数器和第一卷文件的计数器的值均加1。
步骤S207,若资源信息没有与任一docker容器进行双向链接指针的创建,则不做操作。
步骤S208,若管理员发起新的docker容器创建命令,则重复步骤S202~S207。
作为一个具体的示例,管理员重新发起创建第二docker容器和第三docker容器的创建命令。其中,根据对创建命令的分析得出第二docker容器所占用的资源信息为第一本地库镜像文件、第一网络信息和第一卷文件;第三docker容器所占用的资源信息为第三网络信息和第三本地库镜像文件。如图4所示,图4示出本发明实施例中第一docker容器、第二docker容器和第三docker容器与它们所占用的资源信息之间的双向链接指针的示意图。其中,图4中资源信息后面的数字表示该资源信息对应的计数器的数值。
在该实施例中,第一本地库镜像文件、第一网络信息、第一卷文件分别与第二docker容器建立了双向指针链接,因此第一本地库镜像文件、第一网络信息、第一卷文件的计数器结果均为2。第三网络信息和第三镜像文件与第三docker容器建立了双向指针链接,因此第三网络信息和第三镜像文件的计数器结果为1。第二本地库镜像文件、第二网络信息、第二卷文件和第三卷文件没有被任何docker容器所依赖,因此第二本地库镜像文件、第二网络信息、第二卷文件和第三卷文件的计数器结果均为0。
步骤S102,根据docker容器的标识和docker容器的双向链接指针中正向链接指针,获取docker容器的资源信息。
在本发明的实施例中,步骤S102包括以下步骤:
步骤S301,根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息。
在步骤S301中,docker容器为已创建的docker容器中的任意一个docker容器。在本发明的实施例中,docker容器的标识可以为docker容器的身份识别号(Identification,ID)或名称,本发明实施例中不做具体限制。
在本发明的实施例中,docker容器与该docker容器占用的每一个资源信息之间都具有一个双向链接指针。由于docker容器所占用的资源信息为一种或一种以上,所以docker容器与该docker容器占用的资源信息之间的双向链接指针的数目与该容器占用的资源信息的数目有关。
其中,docker容器与该容器占用的资源信息之间的双向链接指针包括正向链接指针和反向链接指针,其中docker容器的双向链接指针中正向链接指针指向的是该docker容器占用的资源信息,该docker容器占用的资源信息的反向链接指针指向的是依赖该资源信息的docker容器。
进一步的,选取docker容器的一个正向链接指针作为当前正向链接指针,并根据当前正向链接指针获取该当前正向链接指针指向的资源信息。
步骤S302,docker容器的双向链接指针中正向链接指针的数目减一,将下一个正向链接指针作为当前正向链接指针。
在本发明的实施例中,由于需要获取docker容器所占用的所有资源信息,因此当获取步骤S301中的当前正向链接指针指向的资源信息后,需要将docker容器对应的正向链接指针的数目减一,将下一个正向链接指针作为当前正向链接指针,即更新当前正向链接指针。
在本发明的实施例中,更新当前正向链接指针后,根据更新后的当前正向链接指针获取该指针对应的资源信息。
步骤S303,当前正向链接指针并非唯一,则继续根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息,直到当前正向链接指针是唯一的正向链接指针。
在本发明的实施例中,由于docker容器的正向链接指针的数目可能为多个,因此在步骤S303中,只要docker容器的当前正向链接指针不是唯一的正向链接指针,那么继续进行步骤S301~S302,直至获取docker容器中所有正向链接指针指向的资源信息。
步骤S103,依据docker容器的资源信息和docker容器的资源信息的双向链接指针中反向链接指针,获取依赖于docker容器的资源信息的其他docker容器。
在本发明的实施例中,步骤S103包括以下步骤:
步骤S401,依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器。
在本发明的实施例中,根据步骤S103中获取的docker容器占用的资源信息以及该资源信息的双向链接指针中的反向链接指针,可获取依赖于该资源信息的所有docker容器的标识。其中,docker容器的资源信息除了被该docker容器所依赖之外,还有可能被其他的docker容器所依赖。
在本发明的实施例中,通过选取docker容器的资源信息对应的一个反向链接指针作为当前反向链接指针,即可获取依赖于该资源信息的其他docker容器的标识。
由于docker容器的资源信息的反向链接指针的数目可能为多个,为了获取所有依赖于该资源信息的docker容器,需要对docker容器的资源信息的反向链接指针进行遍历。
步骤S402,docker容器的资源信息的双向链接指针中反向链接指针的数目减一,将下一个反向链接指针作为当前反向链接指针。
在本发明的实施例中,由于docker容器的资源信息的双向链接指针中反向链接指针的数目可能为多个,因此获取步骤S401中当前反向链接指针对应的docker容器的标识后,将docker容器的资源信息的双向链接指针中反向链接指针的数目减一,将下一个反向链接指针作为当前反向链接指针,即更新当前反向链接指针。
步骤S403,当前反向链接指针并非唯一,则继续依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器,直到当前反向链接指针是唯一反向链接指针。
在本发明的实施例中,由于docker容器的资源信息的反向链接指针的数目可能为多个,因此在步骤S403中,只要docker容器的当前反向链接指针不是唯一的反向链接指针,那么继续进行步骤S401~S402,直至获取docker容器的资源信息的所有反向链接指针指向的其他docker容器的标识。
步骤S104,基于docker容器的资源信息和依赖于docker容器的资源信息的其他docker容器,构成完整关系视图。
在本发明的实施例中,根据已创建的任一docker容器的资源信息以及依赖于该docker容器资源信息的其他docker容器,可建立所有docker容器占用的资源信息以及依赖该资源信息的docker容器之间的完整关系视图。
在本发明的实施例中,步骤S102~步骤S104中更新docker容器的双向链接指针中的当前正向链接指针是为了遍历docker容器占用的所有资源信息,而更新docker容器的资源信息的双向链接指针中的当前反向链接指针是为了遍历依赖docker容器的资源信息的所有其他容器,从而建立所有docker容器与相关资源信息的完整关系视图。
为了便于理解,下面对步骤S102~步骤S104的内容结合一个具体的实施例进行详细介绍。图5示出本发明一实施例的构建docker容器与docker容器所占用的资源信息的完整关系视图的流程示意图。
步骤S501,管理员输入任一docker容器的标识。
步骤S502,获取该docker容器的双向链接指针中的正向链接指针集合{Pi}。
在步骤S502中,作为一个具体示例,管理员输入第一docker容器的标识,如图4所示,第一docker容器具有指向第一本地库镜像文件的正向链接指针P1、指向第一网络信息的正向链接指针P2、指向第一卷文件的正向链接指针P3,即第一docker容器的双向链接指针中的正向链接指针集合为{P1,P2,P3}。
步骤S503,获取集合{Pi}其中的一个正向链接指针,根据该正向链接指针获得该指针指向的资源信息。
作为一个具体示例,选取第一docker容器的双向链接指针中的正向链接指针集合中的P1作为当前正向链接指针,根据指针P1获取第一docker容器的资源信息为第一本地库镜像文件。
步骤S504,读取该资源信息的计数器,若其计数器大于1,则读取该资源信息的反向链接指针集合{Qi}。
在本发明的实施例中,若该docker容器占用的某一资源信息的计数器结果等于1,则代表仅有该docker容器占用该资源信息,没有其他docker容器依赖该资源信息,所以不用读取该资源信息的反向链接指针。
作为一个具体示例,第一docker容器的资源信息第一本地库镜像文件的计数器结果为2,则读取该资源信息的反向链接指针集合。如图4所示,第一本地库镜像文件具有指向第一docker容器的反向链接指针Q1和指向第二docker容器的反向链接指针Q2,即第一本地库镜像文件的反向链接指针集合为{Q1,Q2}。
步骤S505,读取该资源信息的反向链接指针集合{Qi}中的一个反向链接指针对应的docker容器标识。
作为一个具体示例,读取第一本地库镜像文件的反向链接指针集合中的指针Q1,获取指针Q1对应的docker容器为第一docker容器本身。
步骤S506,重复步骤S503-S505,直至该docker容器的双向链接指针中的反向链接指针集合{Qi}遍历完毕。
作为一个具体示例,第一本地库镜像文件的反向链接指针集合中还有反向链接指针Q2,指针Q2对应的为第二docker容器。即第一docker容器的资源信息第一本地库镜像文件还被第二docker容器所依赖。
步骤S507,重复步骤S503-S506,直至该docker容器的双向链接指针中的正向链接指针集合{Pi}遍历完毕。
作为一个具体的示例,继续读取第一docker容器的双向链接指针中的正向链接指针P2和P3,直至遍历第一docker容器的双向链接指针中的正向链接指针集合中所有的指针。
由步骤S501~步骤S507,可以得出第一docker容器占用的资源信息为第一本地库镜像文件、第一网络信息、第一卷文件。其中,第一本地库镜像文件、第一网络信息、第一卷文件又均被第二docker容器所依赖。
利用上述同样的方法,可以得出第二docker容器占用的资源信息为第一本地库镜像文件、第一网络信息、第一卷文件,第三docker容器占用的资源信息为第三本地库镜像文件和第三网络信息。由此可以构建第一docker容器、第二docker容器、第三docker容器和相关资源信息的完整关系视图,如图4所示。
步骤S105,按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器。
本发明实施例中,销毁模块为管理员提供了一个如何销毁容器以及容器所占用的资源信息的方法的接口;管理员可以根据自己的需要定义特定资源类型的销毁顺序、销毁条件等。
本发明实施例中,预设的销毁策略包括:
第一销毁策略:若一资源信息没有被任何docker容器所占用,则该资源信息才可以被销毁,资源信息的销毁顺序应为volume,network,image。
在本发明的实施例中,由于创建docker容器时,docker容器所占用的资源信息从底层到上层的顺序为image、network、volume。由于本地库镜像文件位于最底层,若首先销毁本地库镜像文件,则会造成docker守护系统的崩溃。因此,docker容器的资源信息的销毁顺序为volume,network,image。
第二销毁策略:若管理员发起docker容器销毁命令,则该docker容器占用的全部资源信息一起被销毁;被该docker容器占用的资源信息的反向链接指针所指向的所有docker容器也一起进入冻结状态。
在本发明的实施例中,当管理员需要销毁一个docker容器时,但又不想影响其他docker容器的使用时,可采用第一销毁策略销毁docker容器。其中,步骤S105包括以下步骤:
步骤S601,按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针。
在本发明的实施例中,待销毁docker容器的标识由管理员输入。由于完整关系视图中包括所有docker容器与占用资源的双向链接指针关系,所以根据待销毁docker容器的标识和完整关系视图,可以获取待销毁docker容器的双向链接指针,以用来获取该容器所占用的资源信息。
步骤S602,依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息。
在本发明的实施例中,需要遍历待销毁docker容器的所有双向链接指针,才能获取待销毁docker容器占用的所有资源信息。因此在本发明的实施例中,首先选取待销毁容器的所有双向链接指针中的其中一个作为当前双向链接指针,获取该指针指向的资源信息以及该资源信息是否被其他docker容器所依赖,随后再更新当前双向链接指针进行遍历所有待销毁docker容器的双向链接指针。
步骤S603,将唯一的待销毁docker容器的资源信息移入待销毁集合,然后更新销毁docker容器的资源信息的数目和更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息,直到遍历所有待销毁docker容器的当前双向链接指针。
在本发明的实施例中,利用第一销毁策略进行销毁待销毁docker容器时,需要判断该待销毁docker容器所占用的资源信息是否被其他docker容器占用。
若步骤S602中,当获取当前双向链接指针对应的资源信息后,判断该资源信息是否被其他docker容器所依赖。根据第一销毁策略,若该资源信息没有被其他docker容器所占用,则将该资源信息移入待销毁集合。然后选取待销毁docker容器中的下一个双向链接指针作为当前双向链接指针,即更新当前双向链接指针。
根据更新后的当前双向链接指针,获取待销毁docker容器的另一个资源信息,直至遍历所有待销毁docker容器的当前双向链接指针,从而获取待销毁集合中的所有元素。
步骤S604,销毁待销毁docker容器和待销毁集合中的元素。
为了便于理解,下面结合附图6至图8给出一个具体示例来介绍步骤S601~S604的内容。图6为本发明一实施例的销毁docker容器的流程示意图。
步骤S701,管理员输入待销毁的docker容器的标识。
步骤S702,获取该docker容器的正向链接指针集合{Pi},并对指针集合根据指针属性进行排序。
在步骤S702中,按照第一销毁策略,资源信息的销毁顺序为volume,network,image。因此在待销毁的docker容器的正向链接指针集合中,将指针集合中的元素根据指针属性按照volume,network,image进行排序。若两个指针的指针属性相同,则排序以在原始集合中的位置为准。其中,该原始集合为创建docker容器时所生成的docker容器的正向链接指针集合。
作为一个具体示例,如图4所示,管理员发起销毁第一docker容器的操作,则首先获取第一docker容器的原始正向链接指针集合为{P1,P2,P3}。其中,P1为指向第一本地库镜像文件的正向链接指针、P2为指向第一网络信息的正向链接指针、P3为指向第一卷文件的正向链接指针。
将第一docker容器的原始正向链接指针集合进行排序,排序后的正向链接指针集合为{P3,P2,P1}。
步骤S703,获取排序后的正向链接指针集合{Pi’}中的一个指针Pi’,并根据该指针获取对应的资源信息且获取该资源信息的计数器的值M。
作为一个具体示例,根据第一销毁策略,首先选取正向链接指针P3。如图4所示的完整关系视图,可以得出第一卷文件的计数器的值为2。
步骤S704,判断M-1是否为0。
步骤S705,若为0,该资源信息被移入待销毁集合{Dq},且该资源信息的计数器清0。
作为一个具体示例,第一卷文件的计数器的值减1之后为1,不为0。即第一卷文件被第二docker容器所依赖,所以第一卷文件不能被移入待销毁集合。
步骤S706,否则将该资源信息的计数器更新为M-1。
作为一个具体的示例,第一卷文件的计数器的值更新为1。
步骤S707,重复步骤S703-S706,直至集合{Pi’}遍历完毕。
作为一个具体示例,按照步骤S703-S706的方法,遍历排序后的待销毁docker容器的正向链接指针集合中剩余的指针元素P2和P1,确定待销毁集合中的元素。由于第一本地库镜像文件和第一网络信息也被第二docker容器所依赖,所以均不能被移入待销毁集合。
步骤S708,销毁管理员输入的待销毁容器。
作为一个具体示例,销毁第一docker容器。
步骤S709,销毁待销毁集合{Dq}中的资源信息。
作为一个具体示例,由于第一docker容器的所有占用资源信息均被第二docker容器所依赖,所以待销毁集合中的元素为空,即待销毁资源信息为无。图7为本发明实施例的销毁第一docker容器后的关系视图。
作为另一个具体示例,利用步骤S701~S709的方法,管理员再次发起销毁第二docker容器的销毁操作。根据图7所示的销毁第一docker容器之后的关系视图可知,第二docker容器占用资源信息为第一本地库镜像文件、第一网络信息和第一卷文件。但此时第一本地库镜像文件、第一网络信息、第一卷文件对应的计数器的值均为1,即第二docker容器占用资源信息均不被其他docker容器所依赖。因此第一本地库镜像文件、第一网络信息、第一卷文件均被移入待销毁集合。图8为本发明的实施例中销毁第二docker容器和待销毁集合中的资源信息后的关系视图。
在本发明的实施例中,若采用第二销毁策略销毁docker容器,则步骤S105包括以下步骤:
步骤S801,按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针。
步骤S802,依据待销毁docker容器的当前双向链接指针中正向链接指针,得到当前待销毁docker容器的资源信息。
步骤S803,根据当前待销毁docker容器的资源信息,更新待销毁容器的资源信息集合。
在本发明的实施例中,通过更新待销毁docker容器的当前双向链接指针中正向链接指针,以达到对待销毁docker容器的所有正向链接指针的遍历,从而获取待销毁容器的资源信息集合。
步骤S804,根据当前待销毁docker容器的资源信息和待销毁docker容器的当前双向链接指针中反向链接指针,确定待冻结容器。
在本发明的实施例中,步骤S804包括:
步骤S8041,在待销毁docker容器的当前双向链接指针中反向链接指针中选择一个反向链接指针作为待处理反向链接指针。
步骤S8042,根据当前待销毁docker容器的资源信息和待处理反向链接指针,获取依赖于当前待销毁docker容器的资源信息的相关docker容器。
步骤S8043,利用已删除待销毁docker容器的相关docker容器,更新待冻结容器。
在本发明的实施例中,根据待销毁docker容器的资源信息的反向链接指针获取的相关容器包括该待销毁容器,因此在待冻结容器中需要删除待销毁容器。
步骤S8044,在待销毁docker容器的当前双向链接指针中反向链接指针中选择下一个反向链接指针作为待处理反向链接指针,直至遍历所有待销毁docker容器的当前双向链接指针中反向链接指针。
在本发明的实施例中,通过更新待处理反向链接指针,实现对待销毁docker容器的双向链接指针中所有反向链接指针的遍历,以确定依赖待销毁容器的资源信息的所有待冻结容器。
步骤S805,更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针中正向链接指针,得到当前待销毁docker容器的资源信息,直到遍历待销毁docker容器的双向链接指针。
步骤S806,销毁待销毁docker容器、待销毁容器的资源信息集合以及冻结待冻结容器。
通过本实施例提供的方法,利用第二销毁策略,实现了对待销毁容器和待销毁容器的占用信息的销毁以及对待冻结容器的冻结。
为了便于理解,下面结合附图9至图10给出一个具体示例来介绍步骤S801~S806的内容。图9为本发明一实施例的强制销毁docker容器的流程示意图。
步骤S901,管理员输入待销毁docker容器的标识。
作为一个具体示例,管理员输入第一docker容器的标识。
步骤S902,获取该待销毁docker容器的正向链接指针集合{Pi}。
作为一个具体示例,获取第一docker容器的正向链接指针集合为{P1,P2,P3}。其中,P1为指向第一本地库镜像文件的正向链接指针、P2为指向第一网络信息的正向链接指针、P3为指向第一卷文件的正向链接指针。
步骤S903,从正向链接指针集合{Pi}中获取一个指针Pi,根据该指针获取待销毁容器的资源信息。
作为一个具体示例,选取第一docker容器的正向链接指针集合中的P1,该指针对应的资源信息为第一本地库镜像文件,将第一本地库镜像文件放入待销毁资源信息集合。
步骤S904,获取该资源信息的反向链接指针集合{Qi}。
作为一个具体示例,第一本地库镜像文件的反向链接指针集合为{Q1,Q2},其中Q1为指向第一docker容器的反向链接指针,Q2为指向第二docker容器的反向链接指针。
步骤S905,从集合{Qi}获取一个指针Qi,根据该指针获取相关的容器ID。
作为一个具体的示例,选取反向链接指针Q1,该指针对应的相关容器为第一docker容器。
步骤S906,将获取的容器ID放入待冻结容器集合{Cp}。
作为一个具体的示例,将第一docker容器的ID放入初始待冻结容器集合{Cp}。
步骤S907,将待冻结容器集合与待销毁容器ID做差集,获得待冻结容器集合{Cp’}。
作为一个具体示例,将初始待冻结容器集合与第一docker容器做差集,则待冻结容器为空集。
步骤S908,重复步骤S905-S907,直至集合{Qi}遍历完毕。
作为一个具体示例,继续选取反向链接指针Q2,该指针对应的相关容器为第二docker容器。由于第二docker容器不是待销毁容器,因此待冻结容器集合中包含第二docker容器。
步骤S909,将正向链接指针Pi指向的资源信息放入待销毁资源集合{Dq}。
作为一个具体示例,将正向链接指针P1指向的第一本地库镜像文件放入待销毁资源集合。
步骤S910,重复步骤S903-S909,直至集合{Pi}遍历完毕。
作为一个具体示例,当选取正向链接指针P2和P3时,待冻结容器集合中仍为第二docker容器。而待销毁资源集合{Dq}和待冻结容器集合中新添入元素第一网络信息和第一卷文件。
步骤S911,将获取的待销毁资源集合{Dq}和待冻结容器集合{Cp’}输出。
作为一个具体示例,待销毁资源集合为{第一本地库镜像文件,第一网络信息,第一卷文件};待冻结容器集合为{第二docker容器}。
步骤S912,将待冻结容器集合{Cp’}中的容器停止运行,进入冻结状态。
作为一个具体示例,将第二docker容器停止运行,进入冻结状态。
步骤S913,销毁管理员输入的容器。
作为一个具体示例,销毁第一docker容器。
步骤S914,对待销毁资源集合{Dq}中的每个Dq进行资源销毁操作。
作为一个具体示例,销毁第一本地库镜像文件、第一网络信息和第一卷文件。如图10所示,图10示出强制销毁第一docker容器后的关系视图。
通过本发明实施例提供的销毁docker容器的方法,实现了对docker容器创建时所占用的非cpu、内存、端口资源进行很好的跟踪与整理;并在容器销毁时,对容器所占用的资源信息进行统一的控制与管理,提高了容器以及容器资源销毁的准确性和效率。
图11示出了根据本发明一实施例提供的销毁docker容器的装置300的结构示意图。如图11所示,销毁docker容器的装置包括:
双向链接指针创建模块310,用于创建docker容器与docker容器占用的资源信息的双向链接指针;
资源信息获取模块320,用于根据docker容器的标识和docker容器的双向链接指针中正向链接指针,获取docker容器的资源信息;
容器获取模块330,用于依据docker容器的资源信息和docker容器的资源信息的双向链接指针中反向链接指针,获取依赖于docker容器的资源信息的其他docker容器;
完整关系视图构建模块340,用于基于docker容器的资源信息和依赖于docker容器的资源信息的其他docker容器,构成完整关系视图;
销毁模块350,用于按照待销毁docker容器的标识、完整关系视图和预设的销毁策略,遍历待销毁docker容器的双向链接指针,销毁待销毁docker容器。
在本发明的实施例中,双向链接指针创建模块310,具体可以用于:
依据创建命令,创建docker容器与docker容器占用的资源信息的双向链接指针并追加指针属性,创建命令包括本地库镜像参数,指针属性包括本地库镜像文件资源信息。
在本发明的实施例中,资源信息获取模块320,具体可以用于:
根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息;
docker容器的双向链接指针中正向链接指针的数目减一,将下一个正向链接指针作为当前正向链接指针;
当前正向链接指针并非唯一,则继续根据docker容器的标识和docker容器的双向链接指针中当前正向链接指针,获取docker容器的资源信息,直到当前正向链接指针是唯一的正向链接指针。
在本发明的实施例中,容器获取模块330,具体可以用于:
依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器;
docker容器的资源信息的双向链接指针中反向链接指针的数目减一,将下一个反向链接指针作为当前反向链接指针;
当前反向链接指针并非唯一,则继续依据docker容器的资源信息和docker容器的资源信息的双向链接指针中当前反向链接指针,获取依赖于docker容器的资源信息的其他docker容器,直到当前反向链接指针是唯一反向链接指针。
在本发明的一个实施例中,销毁模块350,具体可以用于:
按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针;
依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息;
将唯一的待销毁docker容器的资源信息移入待销毁集合,然后更新销毁docker容器的资源信息的数目和更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息,直到遍历所有待销毁docker容器的当前双向链接指针;
销毁待销毁docker容器和待销毁集合中的元素。
在本发明的另一个实施例中,销毁模块350,具体可以用于:
按照待销毁docker容器的标识和完整关系视图,获取待销毁docker容器的双向链接指针;
依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息;
将唯一的待销毁docker容器的资源信息移入待销毁集合,然后更新销毁docker容器的资源信息的数目和更新当前双向链接指针,继续依据待销毁docker容器的当前双向链接指针,得到待销毁docker容器的资源信息,直到遍历所有待销毁docker容器的当前双向链接指针;
销毁待销毁docker容器和待销毁集合中的元素。
在本发明的实施例中,在根据当前待销毁docker容器的资源信息和待销毁docker容器的当前双向链接指针中反向链接指针,确定待冻结容器时,销毁模块350,还具体可以用于:
在待销毁docker容器的当前双向链接指针中反向链接指针中选择一个反向链接指针作为待处理反向链接指针;
根据当前待销毁docker容器的资源信息和待处理反向链接指针,获取依赖于当前待销毁docker容器的资源信息的相关docker容器;
利用已删除待销毁docker容器的相关docker容器,更新待冻结容器;
在待销毁docker容器的当前双向链接指针中反向链接指针中选择下一个反向链接指针作为待处理反向链接指针,直至遍历所有待销毁docker容器的当前双向链接指针中反向链接指针。
通过本发明实施例提供的装置,可以实现对docker容器占用的资源进行统一的控制和管理,无需人工进行删除和销毁,提高了docker容器以及容器占有的资源的准确性和效率。
根据本发明实施例的销毁docker容器的装置的其他细节与以上结合图2至图10描述的根据本发明实施例的销毁docker容器的方法类似,在此不再赘述。
结合图2至图11描述的根据本发明实施例的销毁docker容器的方法和装置可以由销毁docker容器的设备来实现。图12示出根据本发明一实施例的销毁docker容器的设备400的硬件结构示意图。
如图12所示,本实施例中的销毁docker容器的设备400包括:处理器401、存储器402、通信接口403和总线410,其中,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。
具体地,上述处理器401可以包括中央处理器(CPU),或者特定集成电路(ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括HDD、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在销毁docker容器的设备400的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线410包括硬件、软件或两者,将销毁docker容器的设备400的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
也就是说,图12所示的销毁docker容器的设备400可以被实现为包括:处理器401、存储器402、通信接口403和总线410。处理器401、存储器402和通信接口403通过总线410连接并完成相互间的通信。存储器402用于存储程序代码;处理器401通过读取存储器402中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本发明任一实施例中的销毁docker容器的方法,从而实现结合图2至图11描述的销毁docker容器的方法和装置。
本发明实施例还提供一种计算机存储介质,该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的销毁docker容器的方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种销毁docker容器的方法,其特征在于,所述方法包括:
创建docker容器与所述docker容器占用的资源信息的双向链接指针;
根据docker容器的标识和所述docker容器的所述双向链接指针中正向链接指针,获取所述docker容器的资源信息;
依据所述docker容器的资源信息和所述docker容器的资源信息的所述双向链接指针中反向链接指针,获取依赖于所述docker容器的资源信息的其他docker容器;
基于所述docker容器的资源信息和依赖于所述docker容器的资源信息的其他docker容器,构成完整关系视图;
按照待销毁docker容器的标识、所述完整关系视图和预设的销毁策略,遍历所述待销毁docker容器的所述双向链接指针,销毁所述待销毁docker容器。
2.根据权利要求1所述销毁docker容器的方法,其特征在于,所述创建docker容器与所述docker容器占用的资源信息的双向链接指针,包括:
依据创建命令,创建docker容器与所述docker容器占用的资源信息的双向链接指针并追加指针属性,所述创建命令包括本地库镜像参数,所述指针属性包括本地库镜像文件资源信息。
3.根据权利要求1所述销毁docker容器的方法,其特征在于,所述根据docker容器的标识和所述docker容器的所述双向链接指针中正向链接指针,获取所述docker容器的资源信息,包括:
根据docker容器的标识和所述docker容器的所述双向链接指针中当前正向链接指针,获取所述docker容器的资源信息;
所述docker容器的所述双向链接指针中正向链接指针的数目减一,将下一个所述正向链接指针作为所述当前正向链接指针;
所述当前正向链接指针并非唯一,则继续根据docker容器的标识和所述docker容器的所述双向链接指针中当前正向链接指针,获取所述docker容器的资源信息,直到所述当前正向链接指针是唯一的正向链接指针。
4.根据权利要求1所述销毁docker容器的方法,其特征在于,所述依据所述docker容器的资源信息和所述docker容器的资源信息的所述双向链接指针中反向链接指针,获取依赖于所述docker容器的资源信息的其他docker容器,包括:
依据所述docker容器的资源信息和所述docker容器的资源信息的所述双向链接指针中当前反向链接指针,获取依赖于所述docker容器的资源信息的其他docker容器;
所述docker容器的资源信息的所述双向链接指针中反向链接指针的数目减一,将下一个所述反向链接指针作为当前反向链接指针;
所述当前反向链接指针并非唯一,则继续依据所述docker容器的资源信息和所述docker容器的资源信息的所述双向链接指针中当前反向链接指针,获取依赖于所述docker容器的资源信息的其他docker容器,直到所述当前反向链接指针是唯一反向链接指针。
5.根据权利要求1所述销毁docker容器的方法,其特征在于,所述按照待销毁docker容器的标识、所述完整关系视图和预设的销毁策略,遍历所述待销毁docker容器的所述双向链接指针,销毁所述待销毁docker容器,包括:
按照待销毁docker容器的标识和所述完整关系视图,获取所述待销毁docker容器的所述双向链接指针;
依据所述待销毁docker容器的当前所述双向链接指针,得到所述待销毁docker容器的资源信息;
将唯一的所述待销毁docker容器的资源信息移入待销毁集合,然后更新所述销毁docker容器的资源信息的数目和更新当前所述双向链接指针,继续依据所述待销毁docker容器的当前所述双向链接指针,得到所述待销毁docker容器的资源信息,直到遍历所有所述待销毁docker容器的当前所述双向链接指针;
销毁所述待销毁docker容器和待销毁集合中的元素。
6.根据权利要求1所述销毁docker容器的方法,其特征在于,所述按照待销毁docker容器的标识、所述完整关系视图和预设的销毁策略,遍历所述待销毁docker容器的所述双向链接指针,销毁所述待销毁docker容器,包括:
按照待销毁docker容器的标识和所述完整关系视图,获取所述待销毁docker容器的所述双向链接指针;
依据所述待销毁docker容器的当前所述双向链接指针中正向链接指针,得到当前所述待销毁docker容器的资源信息;
根据所述当前所述待销毁docker容器的资源信息,更新待销毁容器的资源信息集合;
根据当前所述待销毁docker容器的资源信息和所述待销毁docker容器的当前所述双向链接指针中反向链接指针,确定待冻结容器;
更新所述当前所述双向链接指针,继续依据所述待销毁docker容器的当前所述双向链接指针中正向链接指针,得到当前所述待销毁docker容器的资源信息,直到遍历所述待销毁docker容器的所述双向链接指针;
销毁所述待销毁docker容器、所述待销毁容器的资源信息集合以及冻结所述待冻结容器。
7.根据权利要求6所述销毁docker容器的方法,其特征在于,所述根据当前所述待销毁docker容器的资源信息和所述待销毁docker容器的当前所述双向链接指针中反向链接指针,确定待冻结容器,包括:
在所述待销毁docker容器的当前所述双向链接指针中反向链接指针中选择一个反向链接指针作为待处理反向链接指针;
根据当前所述待销毁docker容器的资源信息和所述待处理反向链接指针,获取依赖于当前所述待销毁docker容器的资源信息的相关docker容器;
利用已删除所述待销毁docker容器的所述相关docker容器,更新待冻结容器;
在所述待销毁docker容器的当前所述双向链接指针中反向链接指针中选择下一个反向链接指针作为待处理反向链接指针,直至遍历所有所述待销毁docker容器的当前所述双向链接指针中反向链接指针。
8.一种销毁docker容器的装置,其特征在于,所述装置包括:
双向链接指针创建模块,用于创建docker容器与所述docker容器占用的资源信息的双向链接指针;
资源信息获取模块,用于根据docker容器的标识和所述docker容器的所述双向链接指针中正向链接指针,获取所述docker容器的资源信息;
容器获取模块,用于依据所述docker容器的资源信息和所述docker容器的资源信息的所述双向链接指针中反向链接指针,获取依赖于所述docker容器的资源信息的其他docker容器;
完整关系视图构建模块,用于基于所述docker容器的资源信息和依赖于所述docker容器的资源信息的其他docker容器,构成完整关系视图;
销毁模块,用于按照待销毁docker容器的标识、所述完整关系视图和预设的销毁策略,遍历所述待销毁docker容器的所述双向链接指针,销毁所述待销毁docker容器。
9.一种销毁docker容器的设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-7任意一项所述的销毁docker容器的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-7任意一项所述的销毁docker容器的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711307412.XA CN109901908A (zh) | 2017-12-11 | 2017-12-11 | 销毁docker容器的方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711307412.XA CN109901908A (zh) | 2017-12-11 | 2017-12-11 | 销毁docker容器的方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109901908A true CN109901908A (zh) | 2019-06-18 |
Family
ID=66942207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711307412.XA Pending CN109901908A (zh) | 2017-12-11 | 2017-12-11 | 销毁docker容器的方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109901908A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615064A (zh) * | 2022-03-15 | 2022-06-10 | 北京旋极安辰计算科技有限公司 | 一种对于Docker容器创建和销毁的管控方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1188933A (zh) * | 1998-02-06 | 1998-07-29 | 深圳市华为技术有限公司 | 程序设计中内存操作错误的识别方法 |
CN102214263A (zh) * | 2010-04-12 | 2011-10-12 | 无锡科利德斯科技有限公司 | 游戏场景管理方法 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收系统及方法 |
CN105843686A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 单例组件资源释放方法及装置 |
CN106055478A (zh) * | 2016-05-31 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 检测内存泄漏的方法和装置 |
CN106487850A (zh) * | 2015-08-29 | 2017-03-08 | 华为技术有限公司 | 一种云环境下获取镜像的方法、装置和系统 |
US20170083544A1 (en) * | 2015-09-17 | 2017-03-23 | International Business Machines Corporation | Image building |
US20170339065A1 (en) * | 2016-05-20 | 2017-11-23 | Shoretel, Inc. | Hybrid cloud deployment for hybrid unified communications |
-
2017
- 2017-12-11 CN CN201711307412.XA patent/CN109901908A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1188933A (zh) * | 1998-02-06 | 1998-07-29 | 深圳市华为技术有限公司 | 程序设计中内存操作错误的识别方法 |
CN102214263A (zh) * | 2010-04-12 | 2011-10-12 | 无锡科利德斯科技有限公司 | 游戏场景管理方法 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收系统及方法 |
CN106487850A (zh) * | 2015-08-29 | 2017-03-08 | 华为技术有限公司 | 一种云环境下获取镜像的方法、装置和系统 |
US20170083544A1 (en) * | 2015-09-17 | 2017-03-23 | International Business Machines Corporation | Image building |
CN105843686A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 单例组件资源释放方法及装置 |
US20170339065A1 (en) * | 2016-05-20 | 2017-11-23 | Shoretel, Inc. | Hybrid cloud deployment for hybrid unified communications |
CN106055478A (zh) * | 2016-05-31 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 检测内存泄漏的方法和装置 |
Non-Patent Citations (1)
Title |
---|
拾贝壳的小顽童: "C++ Primer消息处理示例", 《HTTPS://BLOG.CSDN.NET/WARRINGAH1/ARTICLE/DETAILS/9321035》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615064A (zh) * | 2022-03-15 | 2022-06-10 | 北京旋极安辰计算科技有限公司 | 一种对于Docker容器创建和销毁的管控方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9934270B2 (en) | Source code search engine | |
JP6449173B2 (ja) | プロセスを構成するためのアプリケーションの構築 | |
US10430281B2 (en) | Space efficient cascading point in time copying | |
US20160085721A1 (en) | Reconfigurable array processor for pattern matching | |
US20120203768A1 (en) | Displaying changes to versioned files | |
US10838963B2 (en) | Optimized access for hierarchical low cardinality value synopsis in analytical databases | |
CN109271078A (zh) | 内容分享方法、终端设备及存储介质 | |
Simons | and Variational Inequalities for Functions on Compact and Noncompact Sets | |
US20140109015A1 (en) | Configurable hierarchical tree view | |
CN111459376B (zh) | 产品引导方法、装置及设备 | |
US20190347245A1 (en) | Determining when a change set was delivered to a workspace or stream and by whom | |
US10592304B2 (en) | Suggesting application programming interfaces based on feature and context analysis | |
CN109492127A (zh) | 数据处理方法、装置、介质和计算设备 | |
US8434051B2 (en) | Schematic wire annotation tool | |
CN107391540A (zh) | 一种小程序展示方法、装置及分类器 | |
US9037994B2 (en) | Navigation to a data definition in a diff context | |
CN109901908A (zh) | 销毁docker容器的方法、装置、设备和介质 | |
CN106503010B (zh) | 一种数据库更改写入分区的方法及装置 | |
CN106066966B (zh) | 冻结应用的显示方法、冻结应用的显示装置和终端 | |
US11593246B2 (en) | Visualization tool for components within a cloud infrastructure | |
CN103345308B (zh) | 用于输入修改的方法与装置 | |
CN109324855A (zh) | 一种应用的展示方法、装置、终端和存储介质 | |
US20120192130A1 (en) | Circuit design approximation | |
CN109241102A (zh) | 数据处理方法及装置、存储介质和电子设备 | |
CN114265846A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190618 |
|
RJ01 | Rejection of invention patent application after publication |