协助用户管理软件容器的计算机装置与方法与流程

文档序号:14554405阅读:144来源:国知局
协助用户管理软件容器的计算机装置与方法与流程

本发明涉及一种计算机装置与方法。更具体而言,本发明涉及一种协助一用户管理软件容器的计算机装置与方法。



背景技术:

linux软件容器(linuxcontainers,lxc)是一种操作系统层虚拟化(operatingsystem–levelvirtualization)技术,其可将应用软件系统打包成一个软件容器(container),或简称为容器,且内含应用软件本身的程序代码,以及所需要的操作系统核心和函数库。docker是一个开放原始码软件项目,其让应用程序部署在软件容器下的工作可以自动化进行,藉此在linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。

docker采用了aufs(advanceunionfs)文件系统来设计一个可以层层堆栈的软件容器映像文件,将软件容器内的所有程序(包括应用程序、相关函数库、配置文件),都打包进docker映像档,并且提供了一个名为dockerfile的配置文件来记录建立软件容器过程的每一个步骤包括参数。只要在任何支持docker平台的环境中,就可以从这个映像档来建立出一个一模一样的软件容器来执行同一个应用程序。如此一来,应用程序等于是可以透过docker映像檔,或甚至只需要dockerfile,就能将程序执行环境带着走,移动到任何支持docker的环境中。

在docker这个架构下,由于软件容器的部署与迁移都变得非常容易,故使得软件容器的数量呈现了快速的成长。然而,如此快速且大量的部署软件容器也造成了用户不易于管理软件容器,尤其是,不易于管理软件容器的各种相依状态,例如容器与容器之间的相依状态、容器与实体机器之间的相依状态、容器与虚拟机之间的相依状态等等。有鉴于此,如何在快速且大量部署软件容器的趋势下,提供一种易于管理软件容器的方案,尤其是,管理软件容器的各种相依状态的方案,将是本发明所属技术领域中的一项重要目标。



技术实现要素:

为了达到上述目标,本发明的一个态样可以是一种用以协助一用户管理软件容器的计算机装置。该计算机装置可包含一处理器与一储存器。该处理器可用以转换软件容器数据为图形数据,其中该软件容器数据可包含识别数据及相依(dependency)数据。该储存器可包含一图形数据库(graphdatabase),该图形数据库可用以储存该图形数据。该处理器还可用以因应一用户输入而于该图形数据库中查询该图形数据,使该用户可根据该图形数据管理软件容器,其中,该用户输入是基于符合该图形数据库的一图形操纵语言。

为了达到上述目标,本发明的一个态样可以是一种用以协助一用户管理软件容器的方法。该方法可包含下列步骤:

由一计算机装置来转换软件容器数据为图形数据,该软件容器数据包含识别数据及相依数据;

由该计算机装置来储存该图形数据至一图形数据库;以及

由该计算机装置因应一用户输入而于该图形数据库中查询该图形数据,使该用户根据该图形数据管理软件容器,其中,该用户输入是基于符合该图形数据库的一图形操纵语言。

综上所述,本发明可将软件容器数据转换为图形数据并将其储存至一图形数据库,以便让用户可根据该图形数据库所储存的图形数据来管理软件容器。相较于软件容器数据本身的表示方式(例如文字、表格)不容易呈现软件容器的各种相依状态,图形数据的表示方式可透过图形遍历(graphtraversal)的操作而轻易地且可视化地呈现软件容器的各种相依状态。另外,将软件容器数据转换为图形数据可让用户只需利用符合该图形数据库的一图形操纵语言就可轻易地查询该图形数据。因此,在快速且大量部署软件容器的趋势下,本发明确实提供了一种易于管理软件容器的方案。

以上内容呈现了本发明的摘要说明(涵盖了本发明解决的问题、采用的手段以及达到的功效),以提供对本发明的基本理解。以上内容并非有意概括本发明的所有态样。另外,以上内容既不是为了确认本发明的任一或所有态样的关键或必要元件,也不是为了描述本发明的任一或所有态样的范围。上述内容的目的仅是以一简单形式来呈现本发明的部分态样的某些概念,以作为随后详细描述的一个引言。

附图说明

图1例示了在本发明的一或多个实施例中一种用以协助一用户管理软件容器的计算机装置。

图2例示了在本发明的一或多个实施例中转换软件容器数据为图形数据的一过程。

图3例示了在本发明的一或多个实施例中一图形数据库的一格式。

图4例示了在本发明的一或多个实施例中一软件容器环境。

图5例示了在本发明的一或多个实施例中一图形数据库中的图形数据。

图6例示了在本发明的一或多个实施例中一种用以协助一用户管理软件容器的方法。

符号说明

1:计算机装置

10:硬件层

11:处理器

12:操作系统核心层

121:网桥

111:格式化程序

113:图形化程序

13:储存器

131:软件容器数据库

133:图形数据库

1331:图形数据库的格式

135:图解数据库

15:i/o接口

17:网络接口

171:容器应用程序编程接口

191:流量侦测接口

20:用户输入

40:软件容器数据

42:经格式化的软件容器数据

50:图形数据

6:协助用户管理软件容器的方法

601~605:步骤

8:计算机装置

9:网络

c:软件容器

cd:侦测软件容器

具体实施方式

以下所述各种实施例并非用以限制本发明只能在所述的环境、应用、结构、流程或步骤方能实施。于附图中,与本发明非直接相关的元件皆已省略。于附图中,各元件的尺寸以及各元件之间的比例仅是范例,而非用以限制本发明。除了特别说明之外,在以下内容中,相同(或相近)的元件符号可对应至相同(或相近)的元件。

图1例示了在本发明的一或多个实施例中一种用以协助一用户管理软件容器的计算机装置,但图1所示的计算机装置只是一个范例,而非为了限制本发明。参照图1,一计算机装置1可包含一处理器11、一储存器13、一i/o接口15与一网络接口17。可透过其他元件,例如透过各种总线(bus),使处理器11、储存器13、i/o接口15与网络接口17电性连接(即间接电性连接);或者可不透过其他元件而使处理器11、储存器13、i/o接口15与网络接口17电性连接(即直接电性连接)。透过该直接连接或该间接连接,可在处理器11、储存器13、i/o接口15与网络接口17之间传递信号并交换数据。计算机装置1可以是各种类型的计算机装置,例如但不限于移动电话、笔记本电脑、平板计算机等、桌面计算机等。

处理器11可以是一般计算机装置/计算机内所具备的一中央处理器(cpu),可被编程以解释计算机指令、处理计算机软件中的数据、以及执行各种运算程序。该中央处理器可以是一由多个独立单元构成的处理器、或是一由一或多个集成电路构成的微处理器。

储存器13可包含一般计算机装置/计算机内所具备的各种储存单元。储存器13可包含第一级存储器(又称主存储器或内部存储器),通常简称为存储器,这层的存储器与cpu直接连通。cpu可读取储存在存储器的指令集,并在需要时执行这些指令集。储存器13还可包含第二级存储器(又称外部存储器或辅助存储器),且第二级存储器和中央处理器并没有直接连通,而是透过存储器的i/o通道来与之连接,并使用数据缓冲器来将数据传送至第一级存储器。在不供应电源的情况下,第二级存储器的数据仍然不会消失(即非挥发性)。第二级存储器可例如是各种类型的硬盘、光盘等。储存器13亦可包含第三级储存装置,亦即,可直接插入或自计算机拔除的储存装置,例如随身碟。

i/o接口15可包含一般计算机装置/计算机内所具备的各种输入/输出元件,用以接收来自外部的数据以及输出数据至外部。例如但不限于:鼠标、轨迹球、触摸板、键盘、扫描仪、麦克风、用户接口、屏幕、触摸屏、投影机等等。

网络接口17可包含一般计算机装置/计算机内所具备的至少一实体网络适配器,以作为计算机装置1与一网络9两者之间的一个互接(interconnection)点,其中网络9可以是一私有网络(例如局域网络)或是一公开网络(例如因特网)。根据不同的需求,网络接口17可让计算机装置1以有线存取或无线存取的方式,在网络9上与其他电子装置进行通信并交流数据。于某些实施例中,在网络接口17与网络9之间还可包含切换装置、路由装置等装置。

参照图1,处理器11可用以转换软件容器数据40为图形数据50,其中软件容器数据40包含识别数据及相依数据。该识别数据可包含软件容器的识别数据,以及包含实体机器与虚拟机其中至少一种的识别数据。软件容器的识别数据可包含但不限于:软件容器名称、软件容器标识符、处理(process)标识符、映像档(image)标识符、软件容器的执行状态、cpu利用率、存储器利用率、因特网协议地址(ipaddress)、通信端口(port)…等。实体机器与虚拟机的识别数据可包含但不限于:机器名称、cpu利用率、存储器利用率、因特网协议地址、通信端口…等。该相依数据可包含容器与容器之间的相依状态、容器与实体机器之间的相依状态、以及容器与虚拟机之间相依状态其中至少一种。

储存器13可包含一图形数据库133,且图形数据库133可用以储存图形数据50。于某些实施例中,储存器13可包含一用以储存软件容器数据40的软件容器数据库131,且处理器11可从软件容器数据库131取得软件容器数据40。于某些实施例中,储存器13可不包含软件容器数据库131,且处理器11可经由i/o接口15及/或网络接口17而从计算机装置1的外部直接取得软件容器数据40。

在图形数据50被储存至图形数据库133之后,处理器11可因应一用户的一用户输入20而于图形数据库133中查询图形数据50,以便该用户可根据图形数据50来管理软件容器,其中用户输入20是基于符合图形数据库133的一图形操纵语言。于某些实施例中,处理器11可经由网络接口17以及网络9而从该用户接收用户输入20。于某些实施例中,处理器11可经由i/o接口15而从该用户接收用户输入20。

图2例示了在本发明的一或多个实施例中转换软件容器数据为图形数据的一过程,但图2所示的过程只是一个范例,而非为了限制本发明。参照图2,处理器11可执行一格式化程序111以将软件容器数据40格式化为符合图形数据库133的一格式1331,然后执行一图形化程序113以将经格式化的软件容器数据42转换为图形数据50。假设图形数据库133是名为neo4j的图形数据库,图形化程序113可基于名为cypher的图形操纵语言来图形化经格式化的软件容器数据42,以建立或更新图形数据50。举例而言,图形化程序113可根据以下指令建立一名为h1的实体机器节点、一名为c1的软件容器节点、以及一表示该实体机器节点执行该软件容器节点的执行边线:

create(host:crew{name:‘h1’}),

(container:crew{name:‘v1’}),

(host)-[:run]->(container)

另举例而言,图形化程序113可根据以下指令更新该软件容器的cpu利用率:

update(container:crew{name:‘v1’,cpu:‘12%’})

于某些实施例中,格式化程序111与图形化程序113可被整合为单一程序。于某些实施例中,图形数据库131的格式1331可包含节点类别、边线类别、节点属性以及边线属性。于某些实施例中,储存器13可包含一图解数据库(schemadatabase)135,用以储存图形数据库133的格式1331。于某些实施例中,图解数据库135可以被设置在图形数据库133中。

图3例示了在本发明的一或多个实施例中一图形数据库的一格式,但图3所示的格式只是一个范例,而非为了限制本发明。参照图3,图形数据库131的格式1331可包含节点类别、边线类别、节点属性以及边线属性,且该节点类别可包含软件容器节点、以及实体机器节点与虚拟机节点其中至少一种,而该边线类别可包含网络请求边线以及执行边线。

可根据不同需求以及图形数据库131的类别来设定该节点属性以及该边线属性。举例而言,软件容器节点的属性类别可包含但不限于:图形数据库所产生的通用唯一标识符(universallyuniqueidentifier,uuid)、卷标(label)、软件容器名称、软件容器标识符、处理标识符、映像文件标识符、软件容器的执行状态、cpu利用率、存储器利用率、因特网协议地址、通信端口…等。举例而言,实体机器节点和虚拟机节点的属性类别可包含但不限于:图形数据库所产生的uuid、标签、机器名称、cpu利用率、存储器利用率、因特网协议地址、通信端口…等。在软件容器数据40中,与机器名称、cpu利用率、存储器利用率、因特网协议地址、通信端口相对应的参数即属于实体机器或虚拟机的识别信息。举例而言,网络请求边线的属性类别可包含:图形数据库所产生的uuid、卷标、网络请求计数…等。举例而言,执行边线的属性类别可包含:图形数据库所产生的uuid、标签、有效期…等。标签可用以标示节点与边线的类别。

图4例示了在本发明的一或多个实施例中一软件容器环境,但图4所示的软件容器环境只是一个范例,而非为了限制本发明。参照图4,在软件容器环境4中,建立在计算机装置1的一操作系统核心层(operationsystemkernellayer)12上的每一个软件容器c,例如透过docker引擎所建立的软件容器c,可透过一容器应用程序编程接口(applicationinterface,api)171而连接到操作系统核心层12。操作系统核心层12可包含一网桥121,例如docker系统所预设的docker0,用以将每一个软件容器c与硬件层10中的网络接口17所包含的一个实体网络适配器连接。透过网桥121与网络接口17,计算机装置1中每一个软件容器c可在网络9上与任一其他计算机装置8及其所包含的虚拟机及/或软件容器c进行通信并交流数据。

于某些实施例中,在软件容器环境4中,处理器11可在计算机装置1的操作系统核心层12上建立至少一侦测软件容器cd。该至少一侦测软件容器cd可用以在软件容器环境4中进行侦测,以提供软件容器数据40至处理器11。举例而言,该至少一侦测软件容器cd可透过容器应用程序编程接口171而从操作系统核心层12侦测出软件容器数据40所包含的识别数据。该识别数据可包含计算机装置1与每一个计算机装置8本身的识别数据(即实体机器的识别数据)、该等计算计装置所包含的软件容器c的识别数据以及该等计算计装置所包含的虚拟机的识别数据。

于某些实施例中,该至少一侦测软件容器cd可利用一流量侦测接口191来侦测软件容器数据40的相依数据。举例而言,流量侦测接口191可以采用支持icmp、dns、http、amqp、cassandra、mysql、psql、redis、thrift-rpc、mongodb、memcache…等协议的软件套件packetbeat。由于每一个计算机装置所包含的软件容器都会透过其内部的网桥而相互连接且连接到网络9上,故处理器11只需透过软件套件packetbeat来侦测流经网桥121上每一个封包的来源与终点,便可得知每一个软件容器c与其他软件容器c、与其他实体机器、以及与其他虚拟机之间的相依状态,进而取得软件容器数据40所包含的相依数据。

于某些实施例中,处理器11可根据侦测软件容器cd所侦测的结果决定是否转换软件容器数据40为图形数据50(即决定是否将软件容器数据40同步至图形数据库133中的图形数据50)。详言之,透过该至少一侦测软件容器cd所侦测的该识别数据与该相依数据,处理器11便可判断软件容器、实体机器与虚拟机是否有变动(例如,新增、删除、迁移、更新等),然后根据该变动决定是否转换软件容器数据40为图形数据50。

图5例示了在本发明的一或多个实施例中一图形数据库中的图形数据,但图5所示的图形数据只是一个范例,而非为了限制本发明。参照图5,假设图形数据库133是名为neo4j的图形数据库,且图形数据50包含二个实体机器节点(uuid分别是001、003,且机器名称分别是h1、h2)、一个虚拟机节点(uuid为002,且机器名称为v1)、五个软件容器节点(uuid为004~008,且软件容器名称为c1~c5)、五条执行边线(uuid为100~104)以及四条网络请求边线(uuid为105~108)。uuid为001的实体机器节点执行uuid为004的软件容器节点1分钟,uuid为002的虚拟机节点执行uuid为005的软件容器节点3分钟,uuid为003的实体机器节点分别执行uuid为006~008的软件容器节点10天。uuid为004的软件容器节点请求uuid为005的软件容器节点25次,uuid为005的软件容器节点请求uuid为006的软件容器节点1次,且uuid为005的软件容器节点分别请求uuid为007、008的软件容器节点3次。

用户可使用符合图形数据库133(例如neo4j)的一图形操纵语言(例如cypher)来指示处理器11去查询图5所示的图形数据50,藉此取得管理容器所需的各种信息。举例而言,用户可根据以下指令去查询图形数据50,并要求回传名为h1的实体机器节点及其所执行的所有软件容器节点:

match(host)-[r:run]-(containers)

wherehost.name=“h1”

returnhost,containers

然后,图形数据库133将以图形的方式呈现uuid为001的实体机器节点、uuid为004的软件容器节点、以及uuid为100的执行边线。

另举例而言,用户可根据以下指令去查询图形数据50,并要求回传名为c1的软件容器节点及其所请求的所有软件容器节点,藉此取得与名为c1的软件容器节点及其所请求的所有软件容器节点之间的关系:

match(container)-[r:request*]-(containers)

wherecontainer.name=“c1”

returncontainer,containers

然后,图形数据库133将以图形的方式呈现uuid为004~008的软件容器节点、以及uuid为105~108的网络请求边线。

再举例而言,用户可根据以下指令去查询图形数据50,并要求回传名为c1的软件容器节点、其所请求的所有软件容器节点、以及请求次数的加总值,藉此取得与名为c1的软件容器节点的网络请求成本:

match(container)-[r:request*]-(containers)

wherecontainer.name=“c1”

withsum(r.count)astotal_request

returncontainer,containers,total_request

然后,图形数据库133将以图形的方式呈现uuid为004~008的软件容器节点、uuid为105~108的网络请求边线、以及total_request=32(即请求次数的加总值为32)。

于某些实施例中,用户还可使用符合图形数据库133(例如neo4j)的一图形操纵语言(例如cypher)来指示处理器11去查询网络请求边线以及执行边线,藉此取得输入软件容器的流量以及由软件容器输出的流量。于某些实施例中,用户还可使用符合图形数据库133(例如neo4j)的一图形操纵语言(例如cypher)来指示处理器11去查询一组相依节点的总cpu利用率、总存储器利用率以及总网络请求计数,藉此判断该组相依节点中的必要路径。于某些实施例中,用户还可使用符合图形数据库133(例如neo4j)的一图形操纵语言(例如cypher)来指示处理器11去查询节点的资源利用率,藉此平衡设置在实体机器或虚拟机上的软件容器。在不超出本发明精神的前提下,用户还可使用符合图形数据库133(例如neo4j)的一图形操纵语言(例如cypher)来指示处理器11进行各种查询,并藉此取得管理容器所需的各种信息。

图6例示了在本发明的一或多个实施例中一种用以协助一用户管理软件容器的方法,但图6所示的方法只是一个范例,而非为了限制本发明。参照图6,一种用以协助一用户管理软件容器的方法6可包含以下步骤:由一计算机装置来转换软件容器数据为图形数据,该软件容器数据包含识别数据及相依数据(标示为601);由该计算机装置来储存该图形数据至一图形数据库(标示为603);以及由该计算机装置因应一用户输入而于该图形数据库中查询该图形数据,使该用户根据该图形数据管理软件容器,其中,该用户输入是基于符合该图形数据库的一图形操纵语言(标示为605)。于图6中,步骤601-605的呈现顺序并非为了限制本发明,且这样的呈现顺序可在不超出本发明的精神的前提下被调整。

于某些实施例中,步骤601可更包含下列步骤:由该计算机装置执行一格式化程序以将该软件容器数据格式化为符合该图形数据库的一格式;以及由该计算机装置执行一图形化程序以将该经格式化的软件容器数据转换为该图形数据。

于某些实施例中,步骤601可更包含下列步骤:由该计算机装置执行一格式化程序以将该软件容器数据格式化为符合该图形数据库的一格式;以及由该计算机装置执行一图形化程序以将该经格式化的软件容器数据转换为该图形数据。另外,该图形数据库的该格式可包含节点类别、边线类别、节点属性以及边线属性。

于某些实施例中,步骤601可更包含下列步骤:由该计算机装置执行一格式化程序以将该软件容器数据格式化为符合该图形数据库的一格式;以及由该计算机装置执行一图形化程序以将该经格式化的软件容器数据转换为该图形数据。另外,该图形数据库的该格式可包含节点类别、边线类别、节点属性以及边线属性。该节点类别可包含软件容器节点、以及实体机器节点与虚拟机节点其中至少一种,且该边线类别可包含网络请求边线以及执行边线。

于某些实施例中,方法6可更包含以下步骤:由该计算机装置在一软件容器环境里建立至少一侦测软件容器,其中该至少一侦测软件容器用以在该软件容器环境里进行侦测以提供该软件容器数据至该处理器。

于某些实施例中,方法6可更包含以下步骤:由该计算机装置在一软件容器环境里建立至少一侦测软件容器,其中该至少一侦测软件容器用以在该软件容器环境里进行侦测以提供该软件容器数据至该处理器。另外,该至少一侦测软件容器可利用一软件容器专属应用程序编程接口来侦测该识别数据

于某些实施例中,方法6可更包含以下步骤:由该计算机装置在一软件容器环境里建立至少一侦测软件容器,其中该至少一侦测软件容器用以在该软件容器环境里进行侦测以提供该软件容器数据至该处理器。另外,该至少一侦测软件容器可利用一流量侦测接口来侦测该相依数据

于某些实施例中,方法6可更包含以下步骤:由该计算机装置在一软件容器环境里建立至少一侦测软件容器,其中该至少一侦测软件容器用以在该软件容器环境里进行侦测以提供该软件容器数据至该处理器。另外,步骤601可更包含下列步骤:由该计算机装置根据该侦测来决定是否转换该软件容器数据为该图形数据。

于某些实施例中,方法6可应用至计算机装置1,并完成计算机装置1的全部运作。由于本发明所属技术领域中具有通常知识者可根据上文针对计算机装置1的说明而直接得知方法6完成该等运作的相对应步骤,故相关细节于此不再赘述。

综上所述,本发明可将软件容器数据转换为图形数据并将其储存至一图形数据库,以便让用户可根据该图形数据库所储存的图形数据来管理软件容器。相较于软件容器数据本身的表示方式(例如文字、表格)不容易呈现软件容器的各种相依状态,图形数据的表示方式可透过图形遍历(graphtraversal)的操作而轻易地且可视化地呈现软件容器的各种相依状态。另外,将软件容器数据转换为图形数据可让用户只需利用符合该图形数据库的一图形操纵语言就可轻易地查询该图形数据。因此,在快速且大量部署软件容器的趋势下,本发明确实提供了一种易于管理软件容器的方案。

以上所揭露的各种实施例并非为了限制本发明。本领域普通技术人员可轻易完成的改变或均等性的安排都落于本发明的范围内。本发明的范围以权利要求所载内容为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1