一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

管理容器的映像的方法、设备和计算机程序产品与流程

2022-02-20 12:57:55 来源:中国专利 TAG:
1.本公开的各实现方式涉及容器的管理,更具体地,涉及用于在主机设备中管理容器的映像的方法、设备和计算机程序产品。
背景技术
::2.随着计算机技术的发展,“容器”技术已经被广泛地用于多个行业。目前,越来越多的应用程序是基于容器技术来开发的。在此的容器是一种用于封装服务的技术,该技术允许开发者可以将应用程序相关联的各种服务进行封装。进一步,各种类型的容器可以作为后续开发的模块,例如,应用程序可以基于一个或多个容器来开发。3.可以从提供容器的服务器下载容器的映像。可以在主机设备处加载该映像,以便向主机设备部署容器。依赖于容器的功能,容器的映像的大小可以存在较大差异,例如可以在数十kb到数个gb之间变化。因而,映像的存储和下载将会导致相应的存储资源和带宽的开销。此时,如何以更为有效的方式来管理容器的映像成为一个研究热点。技术实现要素:4.因而,期望能够开发并实现一种以更为有效的方式来管理容器的映像的技术方案。期望该技术方案能够与现有的应用环境相兼容,并且通过改造现有应用环境的各种配置,来以更为有效的方式管理容器的映像。5.根据本公开的第一方面,提供了一种用于在主机设备中管理容器的映像的方法。在该方法中,接收第一容器的第一映像,第一映像包括分别用于实现第一容器的第一组服务的第一组映像层。加载第一映像以便在主机设备处部署第一容器。基于第一组映像层中的映像层的属性,为映像层设置到期时间。响应于确定到期时间被满足,从主机设备中删除映像层。6.根据本公开的第二方面,提供了一种电子设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得电子设备执行用于在主机设备中管理容器的映像的动作。该动作包括:接收第一容器的第一映像,第一映像包括分别用于实现第一容器的第一组服务的第一组映像层;加载第一映像以便在主机设备处部署第一容器;基于第一组映像层中的映像层的属性,为映像层设置到期时间;以及响应于确定到期时间被满足,从主机设备中删除映像层。7.根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。8.根据本公开的第四方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第二方面的方法。附图说明9.结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:10.图1示意性示出了本公开的实现方式可以被应用于其中的应用环境的框图;11.图2示意性示出了根据本公开的一个实现方式的用于在主机设备中管理容器的映像的过程的框图;12.图3示意性示出了根据本公开的一个实现方式的用于在主机设备中管理容器的映像的方法的流程图;13.图4示意性示出了根据本公开的一个实现方式的映像层的层级的框图;14.图5示意性示出了根据本公开的一个实现方式的用于获取新的容器的映像的过程的框图;15.图6示意性示出了根据本公开的一个实现方式的主机集群中的各个主机之间的拓扑结构的框图;16.图7a示意性示出了根据本公开的一个实现方式的用于部署新的容器的过程的框图;17.图7b示意性示出了根据本公开的一个实现方式的用于部署新的容器的过程的框图;以及18.图8示意性示出了根据本公开的示例性实现的用于在主机设备中管理容器的映像的设备的框图。具体实施方式19.下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。20.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。21.随着云技术的发展,越来越多的应用程序是基于容器技术来开发的。随着容器的种类和数量的逐渐增加,目前已经建立了映像服务器来管理容器的映像。图1示意性示出了本公开的实现方式可以被应用于其中的应用环境的框图100。如图1所示,映像服务器110可以存储多个容器的映像112、…、以及114等。应用环境中可以包括一个或多个主机集群150,并且主机集群150可以包括多个主机设备130、…、以及140。主机设备可以经由网络120从映像服务器110下载期望的映像。例如,主机设备130可以从映像服务器110下载映像,以形成主机设备130中的映像132。可以加载映像132,以便在主机设备130中部署容器134。22.将会理解,映像的大小可以存在巨大的差异。简单容器的映像可能只有数十kb,而复杂容器的映像可能会达到数个gb。此时,主机设备不得不经由网络120来从远程的映像服务器110下载映像,这将导致较大的通信带宽。此外,网络状况可能并不稳定,进一步增加了下载失败的可能性。23.将会理解,映像可以包括一个或多个映像层。目前已经提出了按照映像层并且基于分布式方式来管理映像的技术方案。然而,映像层的大小也可以存在巨大差异。当从远程位置处下载映像中包括的多个映像层时,仍然需要消耗较大的通信带宽。随着容器的种类和数量的日益增加,如何以更为可靠并且有效的方式来管理容器的映像,成为一个研究热点。24.为了至少部分地解决现有技术方案中的问题,根据本公开的示例性实现方式,提出了一种用于管理容器的映像的方法、设备和计算机程序产品。在下文中将参见图2概括描述本公开的示例性实施方式。图2示意性示出了根据本公开的一个实现方式的用于在主机设备中管理容器的映像的过程的框图200。如图2所示,主机设备130可以经由网络120来从映像服务器110中下载映像,并且将映像存储在主机设备130中的存储空间中以形成映像132。在加载映像132并且已经部署相应的容器之后,并不直接删除映像132,而是为该映像132中的每个映像层设置到期时间。当到达到某个映像层的到期时间时,删除该映像层。25.如图2所示,映像132可以包括多个映像层210、212、以及214等。类似地,主机设备140可以从映像服务器110下载映像以便形成主机设备40中的映像230。该映像230可以包括多个映像层240、242、以及244等。将会理解,在此存储在主机设备130中的各个映像层可以被主机集群150中的各个主机设备(包括主机设备130以及其他主机设备如主机设备140等)访问。26.利用本公开的示例性实现方式,主机设备130可以充当各个映像层的缓存。以此方式,当主机集群150中的主机设备因为部署新的容器而需要使用某个映像层时,可以首先在主机集群150内部搜索是否存在该映像层。如果存在则可以直接在主机集群150内部获取映像层,从而避免经由网络120从远程映像服务器110下载映像层。将会理解,各个主机设备均位于主机集群150内部,因而各个主机之间存在较大的带宽。以此方式可以大大降低从远程位置获取映像层的时间开销。27.在下文中,将参见图3详细描述用于管理容器的映像的方法的更多细节。图3示意性示出了根据本公开的一个实现方式的用于在主机设备中管理容器的映像的方法300的流程图。在框310处,接收第一容器的第一映像,第一映像包括分别用于实现第一容器的第一组服务的第一组映像层。在此,第一容器例如可以是提供网络通信功能的应用程序,并且该第一映像可以包括如图2所示的多个映像层:映像层210,用于提供操作系统(os)服务;映像层212,用于提供网络相关的服务;以及映像层214,用于提供界面相关的服务,等等。28.将会理解,上文描述的多个映像层仅仅是示意性的。基于第一容器的功能,第一组映像层可以包括更多、更少、或者不同的映像层。例如,对于提供存储功能的容器而言,该容器的映像可以包括提供os服务的映像层、提供存储服务的映像层以及提供界面服务的映像层。29.继续参见图3,框320处,加载第一映像以便在主机设备130处部署第一容器。将会理解,在此可以按照已有技术方案来执行加载过程。通过向主机设备130加载第一映像,即可在主机设备130处部署用于提供相应功能的第一容器。将会理解,映像类似于安装程序,在已经加载映像并且成功部署了第一容器之后,映像已经完成了自身的功能。30.根据本公开的示例性实现方式,可以将主机设备130用作从远程的映像服务器110中下载映像的缓存。换言之,可以将主机设备130中的第一映像重用于服务于主机集群150中的主机设备,以便于其他主机设备从该第一映像中查找是否存在可以重用的映像层。根据本公开的示例性实现方式,在已经成功部署第一容器之后,并不直接删除该第一映像,而是为第一映像中的多个映像层分别设置到期时间。在到达到期时间之前,可以在主机设备130中一直保持相应的映像层。在下文中,将参见图3中的框330描述有关设置到期时间的更多细节。31.在图3的框330处,基于第一组映像层中的映像层的属性,为映像层设置到期时间。将会理解,映像层可以具有多种属性,包括但不限于:映像层的层级、大小、并行提供数量、副本数量、以及最近访问时间,等等。可以分别基于上述属性来设置到期时间。32.根据本公开的示例性实现方式,可以基于映像层所在的层级来设置到期时间。具体地,可以将到期时间设置为反比于层级。参见图4描述映像层的层级的概念。图4示意性示出了根据本公开的一个实现方式的映像层的层级的框图400。将会理解,映像并非整体结构,而是可以包括多个层级的映像层。通常而言,映像层的层级越低,则提供的服务越基础;映像层的层级越高,则提供的服务越专用。如图4所示,用于提供os服务的映像层210的层级可以被设置为1,用于提供存储服务的映像层242的层级可以被设置为2,用于提供网络服务的映像层212的层级可以被设置为3,以及用于提供界面服务的映像层214的层级可以被设置为4,等等。33.将会理解,图4仅仅示意性示出了映像中可能包括的几个映像层的层级设置。根据本公开的示例性实现方式,映像可以包括更多、更少或者不同的映像层,并且每个映像层可以具有不同的层级。通常而言,具有较低层级的映像层被使用的频率较高。例如,提供os服务的映像层210是容器的基础,并且几乎每个容器都要使用该映像层210。因而,可以为映像层210设置较长的到期时间。又例如,每个容器可以具有不同的界面,并且提供某个界面服务的映像层214被其他容器使用的可能性较低。因而,可以为该映像层214设置较短的到期时间。34.根据本公开的示例性实现方式,可以利用符号来l表示映像层的层级。此时,可以基于如下公式1来确定映像层的到期时间time:[0035][0036]其中time表示映像层的到期时间,l表示映像层的层级,f表示预定函数。将会理解,上文的公式1仅仅是示意性的,本领域技术人员可以根据具体应用环境的需求来设置函数f的具体公式,只要该公式与变量l成反比。[0037]利用本公开的示例性实现方式,为更为通用的映像层设置较长的到期时间,并且为较为专用的映像层设置较短的到期时间。以此方式,可以利用主机设备中的有限存储空间来尽量存储可能被更多容器使用的映像层,进而减少从主机集群150外部获取映像层的情况。[0038]根据本公开的示例性实现方式,可以基于映像层的大小来设置到期时间。在此,可以将到期时间设置为正比于该大小。将会理解,如果映像层的大小较大,则从远程映像服务器110下载该映像层将会耗费更多的带宽和时间。根据本公开的示例性实现方式,可以优先地存储具有较大大小的映像层。可以利用符号来s表示映像层的大小。此时,可以基于如下公式2来确定映像层的到期时间time:[0039]time=f(log(s))ꢀꢀꢀ公式2[0040]其中time表示映像层的到期时间,s表示映像层的大小,f表示预定函数。将会理解,由于映像层的大小的范围较大,因而在此利用函数log(s)来降低变量s对于到期时间的影响。将会理解,上文的公式2仅仅是示意性的,本领域技术人员可以根据具体应用环境的需求来设置函数f的具体公式,只要该公式与变量s成正比。[0041]根据本公开的示例性实现方式,可以结合上述公式1和2,并且基于如下公式3来确定映像层的到期时间time,其中各个变量的含义与公式1和2中的含义相同。[0042][0043]利用本公开的示例性实现方式,可以为较大的映像层设置较长的到期时间,并且可以为较小的映像层设置较短的到期时间。对于较小的映像层而言,即使在主机集群150中不存在该映像层,从远程的映像服务器110下载该映像层也不会占用太多的带宽和下载时间。以此方式,可以利用主机设备中的有限存储空间来尽量存储更大的映像层,以便降低从远程的映像服务器110下载导致的带宽和时间开销。[0044]根据本公开的示例性实现方式,可以基于映像层的并行提供数量来设置到期时间,在此到期时间可以正比于并行提供数量。将会理解,并行提供数量表示映像层最多被主机集群中的多少个其他主机设备并行访问。基于主机集群150的拓扑结构,主机设备可以被连接至其他的一个或多个主机设备。例如,主机设备130可以被并行地连接至其他3个主机设备。此时,主机设备130中的映像层的并行提供数量为3。可以利用符号来p表示映像层的并行提供数量。此时,可以基于如下公式4来确定映像层的到期时间time:[0045]time=f(p)ꢀꢀꢀ公式4[0046]其中time表示映像层的到期时间,p表示映像层的并行提供数量,f表示预定函数。将会理解,上文的公式4仅仅是示意性的,本领域技术人员可以根据具体应用环境的需求来设置函数f的具体公式,只要该公式与变量p成正比。[0047]根据本公开的示例性实现方式,可以结合上述公式1至4,并且基于如下公式5来确定映像层的到期时间time,其中各个变量的含义与公式1至4中的含义相同。[0048][0049]利用本公开的示例性实现方式,如果某个映像层的并行提供数量越大,则表示该映像层可以被越多的主机设备并行访问。通过为具有较大并行提供数量的映像层设置较长的到期时间,可以优先地在主机设备中存储能够同时被更多其他主机设备访问的映像层。以此方式,可以降低从主机集群150外部的远程映像服务器110下载映像层所需的带宽和时间开销。[0050]根据本公开的示例性实现方式,可以基于主机集群中包括的映像层的副本数量来设置到期时间。具体地,到期时间可以被设置为反比于副本数量。将会理解,副本数量表示在主机集群150中包括的映像层的副本的总量。如果副本数量较多,则删除某个映像层并不会对副本数量造成较大影响;如果副本数量较少,则删除某个映像层将会显著降低副本数量。因而,可以为具有较多副本数量的映像层设置较短的到期时间,并且可以为具有较少副本数量的映像层设置较长的到期时间。可以利用符号来n表示映像层的副本数量。此时,可以基于如下公式6来确定映像层的到期时间time:[0051]time=f(e-n)ꢀꢀ公式6[0052]其中time表示映像层的到期时间,n表示映像层的副本数量,f表示预定函数。将会理解,由于映像层的副本数量的范围较大,因而在此利用函数e-n来降低变量n的变化对于到期时间的映像。将会理解,上文的公式6仅仅是示意性的,本领域技术人员可以根据具体应用环境的需求来设置函数f的具体公式,只要该公式与变量n成反比。[0053]根据本公开的示例性实现方式,可以结合上述公式1至6,并且基于如下公式7来确定映像层的到期时间time,各个变量的含义与公式1至6中的含义相同。[0054][0055]利用本公开的示例性实现方式,通过为具有较小副本数量的映像层设置较长的到期时间,可以优先地在主机设备中存储只有少数副本的映像层。以此方式,可以利用主机集群的有限存储空间来存储更多不同的映像层,进而减少从主机集群150外部的远程映像服务器110下载映像层的情况。[0056]根据本公开的示例性实现方式,可以基于当前时间与映像层最近被访问的时间之间的差异来设置到期时间。具体地,到期时间可以被设置为反比于该差异。在此,可以基于最近最少使用原则来设置到期时间。较大的差异表示映像层在较长的时间段内未被访问,因而可以将其删除。较小的差异表示映像层最近刚刚被访问,因而需要将其保留。可以利用符号来δt表示时间的差异。此时,可以基于如下公式8来确定映像层的到期时间time:[0057][0058]其中time表示映像层的到期时间,n表示映像层的副本数量,f表示预定函数。将会理解,上文的公式8仅仅是示意性的,本领域技术人员可以根据具体应用环境的需求来设置函数f的具体公式,只要该公式与变量δt成反比。[0059]利用本公开的示例性实现方式,通过为最近频繁地被访问的映像层设置较长的到期时间,可以优先地在主机设备中存储热度较高的映像层。以此方式,可以利用主机集群的有限存储空间来存储更易于被访问的映像层,进而减少从主机集群150外部的远程映像服务器110下载映像层的情况。[0060]根据本公开的示例性实现方式,映像层可以被存储该映像层的本地主机设备访问,也可以被该本地主机设备以外的其他主机设备访问。因而,映像层最近被访问的时间包括以下中的至少任一项:主机设备最近访问映像层的时间、以及主机集群中的其他主机设备最近访问映像层的时间。可以基于上述两个时间中的任一项来确定映像层最近被访问的时间。例如,可以从两个时间中选择任一时间,选择较早时间,或者选择较晚时间。[0061]根据本公开的示例性实现方式,如果主机设备中的映像层被访问,则可以更新该映像层的到期时间。利用本公开的示例性实现方式,可以动态地不断调整映像层的到期时间,以便将在主机设备中存储热度较高的映像层。[0062]利用本公开的示例性实现方式,可以考虑本地主机设备的本地访问和主机集群150中的其他主机设备的远程访问两种情况。在此本地访问和远程访问的访问时间都可以表示映像层的热度。以此方式,可以利用主机集群的有限存储空间来存储热度较高的映像层,进而减少从主机集群150外部的远程映像服务器110下载映像层的情况。[0063]根据本公开的示例性实现方式,可以结合上述公式1至8,并且基于如下公式9来确定映像层的到期时间time,各个变量的含义与公式1至8中的含义相同。[0064][0065]在上文中已经参见公式1至9描述了如何确定映像层的到期时间。将会理解,上文的公式1至9仅仅示意性示出了到期时间与映像层的各个属性之间的关系的示例。根据本公开的示例性实现方式,可以基于具体应用环境来设置其他公式。[0066]在下文中,将返回图3描述基于到期时间管理映像层的更多细节。在框340处,如果确定到期时间被满足,从主机设备中删除映像层。根据本公开的示例性实现方式,到达到期时间表示该映像层在未来被访问的可能性大大降低,因而可以从主机设备中删除该映像层。利用本公开的示例性实现方式,可以随着主机集群150中的各个主机设备的运行,不断更新各个映像层的到期时间,并且删除已经到期的映像层。以此方式,可以确保存储的映像不会占用主机设备的过多存储空间,进而确保主机设备的整体性能。[0067]根据本公开的示例性实现方式,可以重用存储在主机设备处的一个或多个映像层。具体地,如果接收到在主机设备处部署第二容器的指示,可以确定用于实现第二容器的第二组服务的第二组映像层。继而,可以确定在主机设备处是否包括第二组映像层中的映像层。如果主机设备包括第二映像层中的某个映像层,则可以直接重用该指定映像层。在下文中,参见图5描述更多细节。[0068]图5示意性示出了根据本公开的一个实现方式的用获取新的容器的映像的过程的框图500。在图5中,假设新的容器的映像510应当包括4个映像层:用于界面服务的映像层、用于网络服务的映像层、用于存储服务的映像层以及用于os的映像层。此时,可以首先检查在主机设备130中是否存在上述映像层。假设此时存储在主机设备130中的全部映像层均未到期,则主机设备130包括用于界面服务的映像层214、用于网络服务的映像层212、以及用于os的映像层210。[0069]此时,可以重用上述映像层。如箭头534所示,可以利用本地存储的映像层214来形成映像510中的映像层524;如箭头532所示,可以利用本地存储的映像层212来形成映像510中的映像层522;如箭头530所示,可以利用本地存储的映像层210来形成映像510中的映像层520。[0070]根据本公开的示例性实现方式,在主机设备130中不包括用于部署新的容器所需的用于存储的映像层,此时可以从主机集群150中的其他主机设备(例如,主机设备140)获取该映像层。如箭头536所示,可以利用在主机设备140中存储的映像层242来形成映像510中的映像层526。此时,在主机设备130中已经包括用于部署新的容器的全部映像层,因而可以启动映像510以便在主机设备130中部署新的容器。[0071]根据本公开的示例性实现方式,利用分别位于主机集群150中的各个主机设备中存储的各个映像层,可以建立统一的映像层的分布式存储系统。经由主机集群150内部的网络连接,各个主机设备可以共享该分布式存储系统中的映像层,进而降低从主机集群150外部下载映像层的需求。[0072]利用本公开的示例性实现方式,可以重用本地主机设备中的映像层,也可以重用主机集群150中的其他主机设备中的映像层。将会理解,主机集群150中的各个主机设备彼此靠近,因而无论访问本地主机设备中的映像层还是访问其他主机设备中的映像层,都可以快速获取期望的映像层。以此方式,可以尽量避免经由网络从远程映像服务器110下载映像层的情况。[0073]根据本公开的示例性实现方式,为了从其他主机设备获取指定映像层,可以首先获取表示主机设备与主机集群中的其他主机设备之间的连接的拓扑结构。在本公开的上下文中,可以以多种方式来表示拓扑结构。例如,可以经由分布式哈希表(distributedhashtable,缩写dht)来表示拓扑结构。可以为每个主机设备设置分布式哈希表,并且可以在分布式哈希表中记载与该主机设备相连接的另一主机设备的通用唯一识别码(universallyuniqueidentifier,缩写uuid),并且可以记录该主机设备与该另一主机设备之间的路径(例如,以“跳”表示)。[0074]在下文中,将参见图6描述跟多细节。图6示意性示出了根据本公开的一个实现方式的主机集群中的各个主机之间的拓扑结构的框图600。如图6所示,主机设备130被连接至主机设备140和610,并且主机设备610被连接至主机设备620。此时,主机设备130的分布式哈希表可以包括如下条目:第一个条目包括主机设备140的uuid和从主机设备130到主机设备140之间的路径(1跳);第二个条目包括主机设备610的uuid和从主机设备130到主机设备610之间的路径(1跳);以及第三个条目包括主机设备620的uuid和从主机设备130到主机设备620之间的路径(2跳)。[0075]根据本公开的示例性实现方式,主机设备130可以经由分布式哈希表来从其他主机设备获取指定映像层。主机设备130可以选择向逻辑距离较近的主机设备进行查询。如果被查询的主机设备具有该指定映像层,则可以向主机设备130返回查询的映像层。如果被查询的主机设备不具有该指定映像层,则可以向其他主机设备转发查询请求。例如,如果主机设备610不具有该指定映像层,则可以向主机设备620转发来自主机设备130的查询请求。如果主机设备620具有该指定映像层,则可以经由主机设备610来向主机设备130返回查询的映像层。[0076]利用本公开的示例性实现方式,主机设备可以直接利用已有的分布式哈希表,来向与自身连接的主机设备查询是否具有期望的映像层。以此方式,可以优先在主机集群150内部获取期望的映像层,进而降低与主机集群150外部进行通信的带宽需求。[0077]图7a示意性示出了根据本公开的一个实现方式的用于部署新的容器的过程的框图700a。如图7a所示,主机设备130可以接收710用于部署新的容器的指示,并且可以确定712与该新的容器相对应的多个映像层。继而,主机设备130可以逐一在本地查找714多个映像层中的各个映像层。如果在本地找到指定映像层,则可以重用该指定映像层。如果在本地未找到指定映像层,则可以向其他主机设备(例如,主机设备140)发送716获取指定映像层的请求。主机设备140在接收到请求后,可以在本地查找718是否存在指定映像层。如果判断结果为“是”,则可以向主机设备130返回720指定映像层。在已经获取了全部多个映像层之后,主机设备130可以加载722多个映像层以便部署新的容器。[0078]将会理解,图7a示意性示出了在主机设备130本地查找714指定映像层以及从主机设备140获取指定映像层的示例。可以针对每个指定映像层执行上述步骤,以便获取多个映像层中的每个映像层。[0079]根据本公开的示例性实现方式,如果主机集群150中不包括指定映像层,可以从映像服务器110获取该指定映像层。在下文中,将参见图7b提供更多细节。图7b示意性示出了根据本公开的一个实现方式的用于部署新的容器的过程的框图700b。在图7b中,步骤710至718与图7a中所示相同,因而不再赘述。[0080]如果主机设备140中不包括指定映像层,则主机设备140可以向其他主机设备转发来自主机设备130的请求(未示出)。如果在主机集群150中不包括该指定映像层,主机设备140可以向主机设备130返回724“空”。此时,主机设备130可以向映像服务器110发送726获取指定映像层的请求。映像服务器110将查找728该指定映像层,并且向主机设备130返回730该指定映像层。在已经获取了全部多个映像层之后,主机设备130可以加载732多个映像层以便部署新的容器。[0081]利用本公开的示例性实现方式,主机设备130可以优先地在主机集群150内部的各个主机设备之中查找用于部署新的映像的各个映像层。如果在主机集群150中不存在某个指定映像层,则可以从远程的映像服务器110下载该指定映像层。相对于直接从远程的映像服务器110下载全部映像层的已有技术方案而言,本公开的示例性实现方式可以充分利用在主机集群150内部存储的映像层,并且只有在主机集群150中不存在某个映像层时,才访问远程的映像服务器110。以此方式,可以降低访问远程映像服务器110的带宽需求,并且降低获取各个映像层的时间开销。[0082]将会理解,上文的图7a和图7b中的过程仅仅是示意性的。根据本公开的示例性实现方式,可以基于具体应用环境来采取不同的过程。例如,当发现具有某个映像层的主机设备正处于较高工作负载(或者出于其他原因)时,可以直接从映像服务器110下载映像层。[0083]在上文中已经参见图2至图7b详细描述了根据本公开的方法的示例,在下文中将描述相应的设备的实现。根据本公开的示例性实现,提供了一种用于在主机设备中管理容器的映像的装置。该装置包括:接收模块,配置用于接收第一容器的第一映像,第一映像包括分别用于实现第一容器的第一组服务的第一组映像层;加载模块,配置用于加载第一映像以便在主机设备处部署第一容器;设置模块,配置用于基于第一组映像层中的映像层的属性,为映像层设置到期时间;以及删除模块,配置用于响应于确定到期时间被满足,从主机设备中删除映像层。根据本公开的示例性实现方式,该装置可以进一步包括用于执行上文描述的方法中的其他步骤的模块。[0084]图8示意性示出了根据本公开的示例性实现的用于在主机设备中管理容器的映像的设备800的框图。如图所示,设备800包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序指令,来执行各种适当的动作和处理。在ram803中,还可存储设备800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。[0085]设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。[0086]上文所描述的各个过程和处理,例如方法300,可由处理单元801执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实现中,计算机程序的部分或者全部可以经由rom802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到ram803并由cpu801执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实现中,cpu801也可以以其他任何适当的方式被配置以实现上述过程/方法。[0087]根据本公开的示例性实现,提供了一种电子设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得电子设备执行一种用于在主机设备中管理容器的映像的动作。该动作包括:接收第一容器的第一映像,第一映像包括分别用于实现第一容器的第一组服务的第一组映像层;加载第一映像以便在主机设备处部署第一容器;基于第一组映像层中的映像层的属性,为映像层设置到期时间;以及响应于确定到期时间被满足,从主机设备中删除映像层。[0088]根据本公开的示例性实现方式,为映像层设置到期时间包括:基于映像层所在的层级来设置到期时间,到期时间反比于层级。[0089]根据本公开的示例性实现方式,为映像层设置到期时间包括:基于映像层的大小来设置到期时间,到期时间正比于大小。[0090]根据本公开的示例性实现方式,为映像层设置到期时间包括:基于映像层的并行提供数量来设置到期时间,到期时间正比于并行提供数量,并且并行提供数量表示映像层最多被主机集群中的多少个其他主机设备并行访问。[0091]根据本公开的示例性实现方式,为映像层设置到期时间包括:基于主机集群中包括的映像层的副本数量来设置到期时间,到期时间反比于副本数量。[0092]根据本公开的示例性实现方式,为映像层设置到期时间包括:基于当前时间与映像层最近被访问的时间之间的差异来设置到期时间,到期时间反比于差异,并且映像层最近被访问的时间包括以下中的至少任一项:主机设备最近访问映像层的时间;以及主机集群中的其他主机设备最近访问映像层的时间。[0093]根据本公开的示例性实现方式,该动作进一步包括:响应于接收到在主机设备处部署第二容器的指示,确定用于实现第二容器的第二组服务的第二组映像层;响应于确定主机设备中不包括第二组映像层中的指定映像层,从主机集群中的其他主机设备获取指定映像层。[0094]根据本公开的示例性实现方式,从其他主机设备获取指定映像层包括:获取表示主机设备与主机集群中的其他主机设备之间的连接的拓扑结构;基于拓扑结构,从其他主机设备获取指定映像层。[0095]根据本公开的示例性实现方式,该动作进一步包括:响应于确定主机集群中不包括指定映像层,从连接至主机集群的映像服务器获取指定映像层。[0096]根据本公开的示例性实现方式,该动作进一步包括:响应于接收到来自主机集群中的其他主机设备的用于获取映像层的请求,向其他主机设备提供映像层;以及更新映像层的到期时间。[0097]根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。[0098]根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。[0099]本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。[0100]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。[0101]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。[0102]用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。[0103]这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。[0104]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。[0105]也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。[0106]附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0107]以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
:的其他普通技术人员能理解本文公开的各实现。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献