在多个容器之间共享数据的方法、计算设备和存储介质技术

技术编号:38743563 阅读:14 留言:0更新日期:2023-09-08 23:26
本公开涉及一种在多个容器之间共享数据的方法、计算设备和存储介质。所述容器是在一宿主机上为同一用户创建的不同容器。所述方法可以包括:在用于在宿主机上创建每个容器的配置文件中添加启动参数,以用于修改该容器在宿主机上的用户信息配置。所述方法还可以包括将配置文件加载到宿主机上以创建容器,其中所创建的容器内的宿主机配置信息与宿主机本身的配置信息相同。配置信息相同。配置信息相同。

【技术实现步骤摘要】
在多个容器之间共享数据的方法、计算设备和存储介质


[0001]本公开总体上涉及云计算领域,更具体地涉及在容器(container)之间共享数据的方法、计算设备和计算机可读存储介质,尤其是在同一用户的不同容器(例如,docker容器)之间共享数据的方法、计算设备和计算机可读存储介质。

技术介绍

[0002]容器技术是一种内核轻量级的操作系统层虚拟化技术。与虚拟机的硬件抽象层虚拟化方式不同,容器技术提供了一种共享操作系统内核的虚拟化方法,从而能够把硬件资源转化为更多的计算资源。Docker容器是容器的一种,其作为轻量级沙箱,实现了不同应用的资源隔离、进程隔离和数据隔离。然而随着微服务的发展,同一个用户的应用根据业务不同拆分成多个微服务,且微服务之间需要数据共享。
[0003]随着云计算时代的到来,应用也从单体SOA应用向微服务转化。每个微服务对应于宿主机上的一个微服务容器。各个微服务容器之间数据共享愈发重要。然而在不增加第三方存储服务插件的情况下,云原生同用户docker容器之间难以实现数据共享。

技术实现思路

[0004]在下文中给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
[0005]根据本公开的一个方面,提供一种在多个容器之间共享数据的方法,所述容器是在一宿主机上为同一用户创建的不同容器,所述方法包括:在用于在宿主机上创建每个容器的配置文件中添加启动参数,以用于修改该容器在宿主机上的用户信息配置;以及将配置文件加载到宿主机上以创建容器,其中所创建的容器内的宿主机配置信息与宿主机本身的配置信息相同。
[0006]在一些实施例中,所述容器可以是docker容器,并且所述启动参数可以包括用于复制宿主机用户组信息的第一参数和用于复制宿主机用户口令信息的第二参数。
[0007]在一些实施例中,所述启动参数还可以包括用于指定宿主机上用于存储所创建的容器的数据的数据路径的第三参数。
[0008]在一些实施例中,所述方法还可以包括:在每个容器启动时使用第一、第二和第三参数,使得每个容器在宿主机上的用户系统和数据路径均相同。
[0009]在一些实施例中,可以在各个容器之间仅用户系统和数据路径相同,而容器内的其他信息可以不共享。
[0010]在一些实施例中,所述方法还可以包括:由所述多个容器中的每一个容器访问所述多个容器中的其他容器在宿主机中存储的数据,而不增加第三方存储插件。
[0011]在一些实施例中,所述多个容器可以是为同一用户针对不同业务而在宿主机上实
现的容器,所述容器能够在宿主机上共享数据。
[0012]在一些实施例中,所述添加启动参数可以包括:通过使用容器的运行命令来添加所述启动参数。
[0013]根据本公开的另一个方面,提供一种在多个容器之间共享数据的计算设备,所述容器是在一宿主机上为同一用户创建的不同容器,所述装置包括:存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存储器上的指令,以执行根据本公开的上述方面所述的方法。
[0014]根据本公开的又一个方面,提供一种计算机可读存储介质,其包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行根据本公开的上述方面所述的方法。
附图说明
[0015]构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
[0016]参照附图,根据下面的详细描述,可以更清楚地理解本公开,其中:
[0017]图1示出了相关技术中在同一用户的不同容器之间的数据共享技术架构的示意图;
[0018]图2示出了根据本公开实施例的在同一用户的不同容器之间的数据共享技术架构的示意图;
[0019]图3示出了根据本公开实施例的在同一用户的不同容器之间的示例方法的流程图;
[0020]图4示出了根据本公开实施例的在同一用户的不同容器之间的示例计算设备的框图;
[0021]图5示出了可以实现根据本公开的实施例的计算设备的示例性配置。
具体实施方式
[0022]参考附图进行以下详细描述,并且提供以下详细描述以帮助全面理解本公开的各种示例实施例。以下描述包括各种细节以帮助理解,但是这些细节仅被认为是示例,而不是为了限制本公开,本公开是由随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语仅用于能够清楚一致地理解本公开。另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。
[0023]目前同一个普通用户会根据不同业务启动多个容器(例如,docker容器)服务。每个容器使用不同的基础镜像。用户在宿主机上的用户名与容器在宿主机上的用户标识符(即,容器配置文件中的参数uid)的映射关系不一样。由于同一个宿主机的用户在进入另一个docker容器后,对应的参数uid发生变化,因此容器中数据回写到宿主机上用户名不同,从而使得同一用户的不同容器产生的数据在宿主机上变成了不同用户的docker容器之间数据共享。目前在不引入第三方存储服务插件的情况下,当前云原生docker尚不支持上述容器之间的数据共享。
[0024]图1示出了相关技术中的数据共享技术架构。如图1所示,为了在同一用户的多个docker容器之间共享数据,引入了第三方存储服务。引入第三方存储服务后,容器会使用微服务配置文件中的用户。同一用户启动的容器,微服务配置文件中的用户相同。未引入第三方存储服务,云原生容器会使用基础镜像中对应的用户名。由于基础镜像不同,uid与用户名的对应关系不一样,因此宿主机上的同一个用户,转换到不同容器内部创建相同的用户名时对应uid不一样。然后使用不同uid将数据文件写入宿主机。文件会对应不同用户的数据权限。这个过程如下所示:
[0025]1)Normal

User1用户启动服务C和服务D的docker容器。两个容器使用Normal

User1用户,将产生的数据存入第三方存储服务。ContainerC可以用Normal

User1用户访问containerD写入的数据,实现数据共享,同理containerD可以访问containerC写入的数据。
[0026]2)而containerA和containerB对于宿主机来说分别使用Normal

UserA和Normal

UserB用户将数据写入宿主机上同一用户Normal

User1下的dataA文件和dataB文件。由于数据属于不同容器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在多个容器之间共享数据的方法,所述容器是在一宿主机上为同一用户创建的不同容器,所述方法包括:在用于在宿主机上创建每个容器的配置文件中添加启动参数,以用于修改该容器在宿主机上的用户配置信息;以及将配置文件加载到宿主机上以创建容器,其中所创建的容器内的宿主机配置信息与宿主机本身的配置信息相同。2.根据权利要求1所述的方法,其中,所述容器是docker容器,并且其中所述启动参数包括用于复制宿主机用户组信息的第一参数和用于复制宿主机用户口令信息的第二参数。3.根据权利要求2所述的方法,其中,所述启动参数还包括用于指定宿主机上用于存储所创建的容器的数据的数据路径的第三参数。4.根据权利要求3所述的方法,还包括:在每个容器启动时使用第一、第二和第三参数,使得每个容器在宿主机上的用户系统和数据路径均相同。5.基于权利要求4所述的方法,其中,各个容器之间仅用户系统和数据路径相同,而容器内的...

【专利技术属性】
技术研发人员:和兴敏李春芳胡飞张亚震郭洲
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1