容器间的通信方法、装置及系统的制作方法

文档序号:10698533阅读:232来源:国知局
容器间的通信方法、装置及系统的制作方法
【专利摘要】本发明实施例提供一种容器间的通信方法、装置及系统。该方法包括:第一虚拟网桥向协调网元发送地址请求报文;第一虚拟网桥接收协调网元发送的目标容器的公网地址;第一虚拟网桥根据目标容器的公网地址向第二虚拟网桥发送源容器的报文。本发明实施例通过不同的Docker服务器创建虚拟网桥,虚拟网桥为其所在的Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的容器通过虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依据对方容器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分散在不同Docker服务器上同一个用户的容器之间的通信。
【专利说明】
容器间的通信方法、装置及系统
技术领域
[0001] 本发明实施例涉及通信技术领域,尤其涉及一种容器间的通信方法、装置及系统。
【背景技术】
[0002] Docker是一个开源的应用容器引擎,在物理主机上安装Docker后,可在Docker的 基础上承载多个容器,多个容器之间相互隔离,多个容器共享物理主机的操作系统,各容器 可放置并执行不同的应用程序。
[0003] 现有技术中,分散在三层网络中不同Docker服务器上且属于同一用户的容器之间 无法正常通信。

【发明内容】

[0004] 本发明实施例提供一种容器间的通信方法、装置及系统,以实现分散在三层网络 中不同Docker服务器上且属于同一用户的容器之间的正常通信。
[0005] 本发明实施例的一个方面是提供一种容器间的通信方法,包括:
[0006] 第一虚拟网桥向协调网元发送地址请求报文,所述地址请求报文包括目标容器的 私网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地 址;
[0007] 所述第一虚拟网桥接收所述协调网元发送的所述目标容器的公网地址;
[0008] 所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的 报文,以使所述第二虚拟网桥将所述报文发送给所述目标容器;
[0009] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0010] 本发明实施例的另一个方面是提供一种容器间的通信方法,包括:
[0011] 协调网元接收第一虚拟网桥发送的地址请求报文,所述地址请求报文包括目标容 器的私网地址;
[0012] 所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地址;
[0013] 所述协调网元向所述第一虚拟网桥发送所述目标容器的公网地址,以使所述第一 虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以使所述第二 虚拟网桥将所述报文发送给所述目标容器;
[0014] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0015] 本发明实施例的另一个方面是提供一种虚拟网桥,包括:
[0016] 发送模块,用于向协调网元发送地址请求报文,所述地址请求报文包括目标容器 的私网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地 址;
[0017] 接收模块,用于接收所述协调网元发送的所述目标容器的公网地址;
[0018] 所述发送模块还用于根据所述目标容器的公网地址向其他虚拟网桥发送源容器 的报文,以使所述其他虚拟网桥将所述报文发送给所述目标容器;
[0019] 其中,所述虚拟网桥和所述源容器位于第一Docker服务器,所述其他虚拟网桥和 所述目标容器位于第二Docker服务器。
[0020] 本发明实施例的另一个方面是提供一种协调网元,包括:
[0021] 接收模块,用于接收第一虚拟网桥发送的地址请求报文,所述地址请求报文包括 目标容器的私网地址;
[0022] 获取模块,用于依据所述目标容器的私网地址获取所述目标容器的公网地址;
[0023] 发送模块,用于向所述第一虚拟网桥发送所述目标容器的公网地址,以使所述第 一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以使所述第 二虚拟网桥将所述报文发送给所述目标容器;
[0024] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0025] 本发明实施例的另一个方面是提供一种容器间的通信系统,包括所述的虚拟网桥 和所述的协调网元。
[0026] 本发明实施例提供的容器间的通信方法、装置及系统,通过在不同的Docker服务 器创建虚拟网桥,虚拟网桥为其所在的Docker服务器上的容器分配私网地址,分散在不同 Docker服务器上同一个用户的容器通过虚拟网桥从协调网元获取通信对方容器所在 Docker服务器的IP地址和端口号,依据对方容器所在Docker服务器的IP地址和端口号与对 方容器通信,实现了在三层网络中分散在不同Docker服务器上同一个用户的容器之间的通 ?目。
【附图说明】
[0027]图1为现有技术中Docker服务器与子网的连接示意图;
[0028]图2为现有技术中Docker服务器与子网的连接示意图;
[0029] 图3为本发明实施例提供的容器间的通信方法流程图;
[0030] 图4为本发明实施例提供的容器间的通信方法适用的网络架构图;
[0031] 图5为本发明另一实施例提供的容器间的通信方法流程图;
[0032] 图6为本发明另一实施例提供的容器间的通信方法流程图;
[0033] 图7为本发明另一实施例提供的容器间的通信方法流程图;
[0034]图8为本发明实施例提供的虚拟网桥的结构图;
[0035]图9为本发明另一实施例提供的虚拟网桥的结构图;
[0036] 图10为本发明实施例提供的协调网元的结构图;
[0037] 图11为本发明另一实施例提供的协调网元的结构图;
[0038] 图12为本发明实施例提供的容器间的通信系统的结构图。
【具体实施方式】
[0039]图1为现有技术中Docker服务器与子网的连接示意图。如图1所示,Docker服务器 21属于子网20 ,Docker服务器21包括容器31和容器32,容器31内设有虚拟网卡41,容器32内 设有虚拟网卡42,虚拟网卡41和虚拟网卡42分别与网桥43连接,网桥43与Docker服务器21 的物理网卡44连接。网桥43分别为容器31和容器32分配互不相同的私网地址,当容器31或 容器32访问子网20之外的设备时,容器31或容器32向网桥43发送报文,报文包括私网地址, 网桥43将私网地址转换为Docker服务器21的公网地址将报文发送出去。另外,容器31和容 器32分别对应Docker服务器21的不同端口,子网20之外的设备根据Docker服务器21的公网 地址和容器的端口号可向Docker服务器21上该端口号对应的容器发送报文。
[0040] 图2为现有技术中Docker服务器与子网的连接示意图。如图2所示,在图1的基础 上,Docker服务器21和Docker服务器51同属于三层网络30, Docker服务器51包括容器61和 容器62,容器61内设有虚拟网卡71,容器62内设有虚拟网卡72,虚拟网卡71和虚拟网卡72分 别与网桥73连接,网桥73与Docker服务器51的物理网卡74连接。假设容器31和容器61属于 用户A,容器32和容器62属于用户B,即同一用户的容器分散在不同的Docker服务器上。
[0041] 图3为本发明实施例提供的容器间的通信方法流程图;图4为本发明实施例提供的 容器间的通信方法适用的网络架构图。本发明实施例针对现有技术中,分散在三层网络中 不同Docker服务器上且属于同一用户的容器之间无法正常通信,提供了容器间的通信方 法,该方法具体步骤如下:
[0042]步骤S101、第一虚拟网桥向协调网元发送地址请求报文,所述地址请求报文包括 目标容器的私网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器 的公网地址;
[0043]本发明实施例提供了分散在不同的Docker服务器上的属于同一用户的容器之间 的通信方法,即如图2所示的容器31和容器61之间、容器32和容器62之间的通信方法,本发 明实施例以容器31和容器61之间的通信方法为例进行介绍。
[0044] 如图4所示,在Docker服务器21上创建代理模块83,通过代理模块83创建第一虚拟 网桥81,代理模块83与第一虚拟网桥81连接,代理模块83用于通过三层网络30和协调网元 10通信,第一虚拟网桥81与容器31通信。在Docker服务器51上创建代理模块84,通过代理模 块84创建第二虚拟网桥82,代理模块84和第二虚拟网桥82连接,代理模块84通过三层网络 30和协调网元10通信,第二虚拟网桥82与容器61通信。协调网元10还连接有管理网元11,第 一虚拟网桥81通过代理模块83向协调网元10发送容器31的存活状态和资源占用率,协调网 元10向管理网元11发送容器31的存活状态和资源占用率,以便管理网元11实时记录容器31 的存活状态和资源占用率,同理,管理网元11还可以记录其他容器的存活状态和资源占用 率。
[0045]另外,当容器31和容器61关闭后,通过代理模块83删除第一虚拟网桥81,通过代理 模块84删除第二虚拟网桥82。
[0046] 在本发明实施例中,协调网元10确定各Docker服务器上容器可被分配的私网地址 的范围,例如,协调网元10确定Docker服务器21上的容器可被分配的私网地址的范围是 19 2. 168.0 . 100-199, Docker服务器51上的容器可被分配的私网地址的范围是 192 · 168 · 0 · 200-254,协调网元10将网段192 · 168 · 0 · 100-199发送给Docker服务器21的代理 模块83,并将网段192.168.0.200-254发送给Docker服务器51的代理模块84;代理模块83将 网段192.168.0.100-199发送给第一虚拟网桥81,代理模块84将网段192.168.0.200-254发 送给第二虚拟网桥82;第一虚拟网桥81为容器31分配私网地址192.168.0.100,第二虚拟网 桥82为容器61分配私网地址192.168.0.200。
[0047]在本发明实施例中,第一虚拟网桥81将容器31的标识信息和容器31的私网地址 192.168.0.100发送给用户终端,第二虚拟网桥82将容器61的标识信息和容器61的私网地 址192.168.0.200发送给用户终端,当容器31和容器61需要通信时,用户终端将容器61的私 网地址192.168.0.200发送给容器31,并将容器31的私网地址192.168.0.100发送给容器 61。容器31生成第一报文,第一报文包括私网源地址和私网目的地址,具体地,私网源地址 是容器31的私网地址192.168.0.100,私网目的地址是容器61的私网地址192.168.0.200。 容器31将该第一报文发送给第一虚拟网桥81,第一虚拟网桥81根据该第一报文生成地址请 求报文,该地址请求报文包括目标容器即容器61的私网地址192.168.0.200,并将该地址请 求报文通过代理模块83发送给协调网元10,协调网元10中维持有数据库列表,该数据库列 表包括与三层网络30连接的各Docker服务器的各容器的标识信息、容器的所有者即用户的 标识信息、容器的私网地址、容器所在的Docker服务器的IP地址、容器占用Docker服务器的 端口号、代理模块的标识信息、代理模块所在的Docker服务器的IP地址。
[0048]协调网元10根据代理模块83发送的地址请求报文,确定代理模块83的标识信息、 代理模块83所在的Docker服务器的IP地址即Docker服务器21的IP地址例如202. X. X. 1,协 调网元10获取地址请求报文中的目标容器即容器61的私网地址192.168.0.200,协调网元 10依据容器61的私网地址192.168.0.200查询数据库列表,获得容器61所在的Docker服务 器的IP地址即Docker服务器51的IP地址例如202. X. X. 2和容器61占用Docker服务器51的端 口号例如5678,协调网元10将确定出的容器61所在的Docker服务器的IP地址202. x.x. 2和 容器61占用Docker服务器的端口号5678发送给代理模块83。
[0049] 步骤S102、所述第一虚拟网桥接收所述协调网元发送的所述目标容器的公网地 址。
[0050] 代理模块83将容器61所在的Docker服务器的IP地址202 . X . X . 2和容器61占用 Docker服务器的端口号5678发送给第一虚拟网桥81。
[0051] 步骤S103、所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送 源容器的报文,以使所述第二虚拟网桥将所述报文发送给所述目标容器;
[0052] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0053] 第一虚拟网桥81接收到容器61所在的Docker服务器的IP地址202. x.x. 2和容器61 占用Docker服务器的端口号5678后,根据容器61所在的Docker服务器的IP地址202 · X · X · 2 和容器61占用Docker服务器的端口号5678后对容器31发送的第一报文进行重新封装,重新 封装后的第一报文的格式如表1所不:
[0054]表 1
[0056] 由表1可知,容器31通过第一虚拟网桥81向容器61发送的第一报文包括报文头和 报文正文,报文头包括公网源地址和公网目的地址,公网源地址是容器31的公网IP地址和 端口号即202. x.x. 1:1234,公网目的地址是容器61的公网IP地址和端口号即202. x.x. 2: 5678,报文正文包括私网源地址、私网目的地址和报文内容,私网源地址是容器31的私网IP 地址即192.168.0.100,私网目的地址是容器61的私网IP地址即192.168.0.200。
[0057] 本发明实施例通过在不同的Docker服务器创建虚拟网桥,虚拟网桥为其所在的 Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的容器通过 虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依据对方容 器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分散在不同 Docker服务器上同一个用户的容器之间的通信。
[0058] 图5为本发明另一实施例提供的容器间的通信方法流程图;在图3对应的实施例的 基础上,本发明实施例提供的容器间的通信方法的具体步骤如下:
[0059] 步骤S501、第一虚拟网桥给所述源容器分配私网地址;
[0060] 在上述实施例中,协调网元10确定各Docker服务器上容器可被分配的私网地址的 范围,例如,协调网元1 〇确定Docker服务器21上的容器可被分配的私网地址的范围是 19 2. 168.0 . 100-199, Docker服务器51上的容器可被分配的私网地址的范围是 192 · 168 · 0 · 200-254,协调网元10将网段192 · 168 · 0 · 100-199发送给Docker服务器21的代理 模块83,并将网段192.168.0.200-254发送给Docker服务器51的代理模块84;代理模块83将 网段192.168.0.100-199发送给第一虚拟网桥81,代理模块84将网段192.168.0.200-254发 送给第二虚拟网桥82;第一虚拟网桥81为容器31分配私网地址192.168.0.100,第二虚拟网 桥82为容器61分配私网地址192.168.0.200。本发明实施例中,源容器是容器31,目标容器 是容器61。
[0061] 步骤S502、所述第一虚拟网桥向所述协调网元发送所述源容器的私网地址和所述 源容器的公网地址,所述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是 所述第一 Docker服务器的IP地址;
[0062] 第一虚拟网桥81为容器31分配私网地址192.168.0.100后,第一虚拟网桥81向协 调网元10发送容器31的私网地址192.168.0.100和容器31的的公网地址,具体地,容器31的 公网地址包括容器31的公网IP地址和端口号,容器31的公网IP地址是Docker服务器21的IP 地址例如202. x.x.l,端口号是容器31在Docker服务器21上占用的端口号例如1234。协调网 元10将容器31的私网地址192.168.0.100、容器31的公网IP地址202. x.x.l、端口号1234存 储在数据库列表。
[0063] 同理,第二虚拟网桥82为容器61分配私网地址192.168.0.200后,第二虚拟网桥82 向协调网元10发送容器61的私网地址192.168.0.200和容器61的公网地址,具体地,容器61 的公网地址包括容器61的公网IP地址和端口号,容器61的公网IP地址是Docker服务器51的 IP地址例如202. X. X. 2,端口号是容器61在Docker服务器51上占用的端口号例如5678。协调 网元10将容器61的私网地址192.168.0.200、容器61的公网IP地址202. x.x. 2和端口号5678 存储在数据库列表。
[0064]在与三层网络30连接的其他Docker服务器上的容器的相关信息在数据库列表中 的创建方法与容器31和容器61的相关信息在数据库列表中的创建方法相同。
[0065] 步骤S503、第一虚拟网桥向协调网元发送地址请求报文,所述地址请求报文包括 目标容器的私网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器 的公网地址;
[0066]所述地址请求报文还包括所述源容器的私网地址。在本发明实施例中,第一虚拟 网桥81向协调网元10发送的地址请求报文同时包括源容器的私网地址即容器31的私网地 址和目标容器的公网地址即容器61的公网地址。
[0067]步骤S504、所述第一虚拟网桥接收所述协调网元发送的所述目标容器的公网地 址;
[0068]步骤S505、所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送 源容器的报文,以使所述第二虚拟网桥将所述报文发送给所述目标容器;
[0069] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0070] 本发明实施例通过第一虚拟网桥给源容器分配私网地址,第一虚拟网桥向协调网 元发送源容器的私网地址和源容器的公网地址,协调网元在数据库列表中存储源容器的私 网地址和源容器的公网地址,保证目标容器通过协调网元可查询获取到源容器的公网地 址,实现了源容器和目标容器的通信。
[0071] 图6为本发明另一实施例提供的容器间的通信方法流程图;本发明实施例提供的 容器间的通信方法的具体步骤如下:
[0072]步骤S601、协调网元接收第一虚拟网桥发送的地址请求报文,所述地址请求报文 包括目标容器的私网地址;
[0073] 如图4所示,在Docker服务器21上创建代理模块83,通过代理模块83创建第一虚拟 网桥81,代理模块83与第一虚拟网桥81连接,代理模块83用于通过三层网络30和协调网元 10通信,第一虚拟网桥81与容器31通信。在Docker服务器51上创建代理模块84,通过代理模 块84创建第二虚拟网桥82,代理模块84和第二虚拟网桥82连接,代理模块84通过三层网络 30和协调网元10通信,第二虚拟网桥82与容器61通信。
[0074] 在本发明实施例中,协调网元10确定各Docker服务器上容器可被分配的私网地址 的范围,例如,协调网元10确定Docker服务器21上的容器可被分配的私网地址的范围是 19 2. 168.0 . 100-199, Docker服务器51上的容器可被分配的私网地址的范围是 192 · 168 · 0 · 200-254,协调网元10将网段192 · 168 · 0 · 100-199发送给Docker服务器21的代理 模块83,并将网段192.168.0.200-254发送给Docker服务器51的代理模块84;代理模块83将 网段192.168.0.100-199发送给第一虚拟网桥81,代理模块84将网段192.168.0.200-254发 送给第二虚拟网桥82;第一虚拟网桥81为容器31分配私网地址192.168.0.100,第二虚拟网 桥82为容器61分配私网地址192.168.0.200。
[0075]在本发明实施例中,第一虚拟网桥81将容器31的标识信息和容器31的私网地址 192.168.0. 100发送给用户终端,第二虚拟网桥82将容器61的标识信息和容器61的私网地 址192.168.0.200发送给用户终端,当容器31和容器61需要通信时,用户终端将容器61的私 网地址192.168.0.200发送给容器31,并将容器31的私网地址192.168.0.100发送给容器 61。容器31生成第一报文,第一报文包括私网源地址和私网目的地址,具体地,私网源地址 是容器31的私网地址192.168.0.100,私网目的地址是容器61的私网地址192.168.0.200。 容器31将该第一报文发送给第一虚拟网桥81,第一虚拟网桥81根据该第一报文生成地址请 求报文,该地址请求报文包括目标容器即容器61的私网地址192.168.0.200,并将该地址请 求报文通过代理模块83发送给协调网元10,协调网元10中维持有数据库列表,该数据库列 表包括与三层网络30连接的各Docker服务器的各容器的标识信息、容器的所有者即用户的 标识信息、容器的私网地址、容器所在的Docker服务器的IP地址、容器占用Docker服务器的 端口号、代理模块的标识信息、代理模块所在的Docker服务器的IP地址。
[0076]协调网元10根据代理模块83发送的地址请求报文,确定代理模块83的标识信息、 代理模块83所在的Docker服务器的IP地址即Docker服务器21的IP地址例如202. X. X. 1。 [0077] 步骤S602、所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网 地址;
[0078] 协调网元1 0获取地址请求报文中的目标容器即容器6 1的私网地址 192.168.0. 200,协调网元10依据容器61的私网地址192.168.0.200查询数据库列表,获得 容器61所在的Docker服务器的IP地址即Docker服务器51的IP地址例如202. χ·χ· 2和容器61 占用Docker服务器51的端口号例如5678,协调网元10将确定出的容器61所在的Docker服务 器的IP地址202. X. X. 2和容器61占用Docker服务器的端口号5678发送给代理模块83。
[0079]步骤S603、所述协调网元向所述第一虚拟网桥发送所述目标容器的公网地址,以 使所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以 使所述第二虚拟网桥将所述报文发送给所述目标容器;
[0080] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器;
[0081 ] 代理模块83将容器61所在的Docker服务器的IP地址202 . X . X . 2和容器61占用 Docker服务器的端口号5678发送给第一虚拟网桥81。
[0082] 第一虚拟网桥81接收到容器61所在的Docker服务器的IP地址202. x.x. 2和容器61 占用Docker服务器的端口号5678后,根据容器61所在的Docker服务器的IP地址202 · X · X · 2 和容器61占用Docker服务器的端口号5678后对容器31发送的第一报文进行重新封装,重新 封装后的第一报文的格式如表1所不:
[0083]表 1
[0086] 由表1可知,容器31通过第一虚拟网桥81向容器61发送的第一报文包括报文头和 报文正文,报文头包括公网源地址和公网目的地址,公网源地址是容器31的公网IP地址和 端口号即202. x.x. 1:1234,公网目的地址是容器61的公网IP地址和端口号即202. x.x. 2: 5678,报文正文包括私网源地址、私网目的地址和报文内容,私网源地址是容器31的私网IP 地址即192.168.0.100,私网目的地址是容器61的私网IP地址即192.168.0.200。
[0087] 本发明实施例通过在不同的Docker服务器创建虚拟网桥,虚拟网桥为其所在的 Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的容器通过 虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依据对方容 器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分散在不同 Docker服务器上同一个用户的容器之间的通信。
[0088] 图7为本发明另一实施例提供的容器间的通信方法流程图;在图6对应的实施例的 基础上,本发明实施例提供的容器间的通信方法的具体步骤如下:
[0089]步骤S701、所述协调网元接收所述第一虚拟网桥发送的所述源容器的私网地址和 所述源容器的公网地址,所述源容器的私网地址是所述第一虚拟网桥给所述源容器分配的 私网地址;所述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址;
[0090] 在上述实施例中,协调网元10确定各Docker服务器上容器可被分配的私网地址的 范围,例如,协调网元1 〇确定Docker服务器21上的容器可被分配的私网地址的范围是 19 2. 168.0 . 100-199, Docker服务器51上的容器可被分配的私网地址的范围是 192 · 168 · 0 · 200-254,协调网元10将网段192 · 168 · 0 · 100-199发送给Docker服务器21的代理 模块83,并将网段192.168.0.200-254发送给Docker服务器51的代理模块84;代理模块83将 网段192.168.0.100-199发送给第一虚拟网桥81,代理模块84将网段192.168.0.200-254发 送给第二虚拟网桥82;第一虚拟网桥81为容器31分配私网地址192.168.0.100,第二虚拟网 桥82为容器61分配私网地址192.168.0.200。本发明实施例中,源容器是容器31,目标容器 是容器61。
[0091] 第一虚拟网桥81为容器31分配私网地址192.168.0.100后,第一虚拟网桥81向协 调网元10发送容器31的私网地址192.168.0.100和容器31的的公网地址,具体地,容器31的 公网地址包括容器31的公网IP地址和端口号,容器31的公网IP地址是Docker服务器21的IP 地址例如202. X. X. 1,端口号是容器31在Docker服务器21上占用的端口号例如1234。
[0092] 同理,第二虚拟网桥82为容器61分配私网地址192.168.0.200后,第二虚拟网桥82 向协调网元10发送容器61的私网地址192.168.0.200和容器61的公网地址,具体地,容器61 的公网地址包括容器61的公网IP地址和端口号,容器61的公网IP地址是Docker服务器51的 IP地址例如202. X. X. 2,端口号是容器61在Docker服务器51上占用的端口号例如5678。 [0093] 步骤S702、所述协调网元将所述源容器的私网地址和所述源容器的公网地址存储 在数据库列表;
[0094] 协调网元10将容器31的私网地址192. 168.0. 100、容器31的公网IP地址 202. X. X. 1、端口号1234存储在数据库列表。
[0095] 协调网元10将容器61的私网地址192.168.0.200、容器61的公网IP地址202. x.x. 2 和端口号5678存储在数据库列表。
[0096]在与三层网络30连接的其他Docker服务器上的容器的相关信息在数据库列表中 的创建方法与容器31和容器61的相关信息在数据库列表中的创建方法相同。
[0097]步骤S703、协调网元接收第一虚拟网桥发送的地址请求报文,所述地址请求报文 包括目标容器的私网地址;
[0098]所述地址请求报文还包括所述源容器的私网地址。在本发明实施例中,第一虚拟 网桥81向协调网元10发送的地址请求报文同时包括源容器的私网地址即容器31的私网地 址和目标容器的公网地址即容器61的公网地址。
[0099]步骤S704、所述协调网元依据所述目标容器的私网地址查询数据库列表,所述数 据库列表包括预设容器的私网地址和所述预设容器的公网地址;
[0100] 协调网元1〇中维持有数据库列表,该数据库列表包括与三层网络30连接的各 Docker服务器的各容器的标识信息、容器的所有者即用户的标识信息、容器的私网地址、容 器所在的Docker服务器的IP地址、容器占用Docker服务器的端口号、代理模块的标识信息、 代理模块所在的Docker服务器的IP地址。具体地,数据库列表包括多个预设容器的相关信 息,且相关信息包括该容器的私网地址和公网地址。协调网元10依据容器61的标识信息、容 器61的用户的标识信息、容器61的私网地址192.168.0.200查询数据库列表。
[0101] 步骤S705、若所述数据库列表包括与所述目标容器的私网地址匹配的预设容器的 私网地址,则所述协调网元确定所述目标容器的公网地址是所述预设容器的公网地址;
[0102] 若所述数据库列表包括与容器61的私网地址192.168.0.200匹配的预设容器的私 网地址,表示数据库列表中包括容器61的私网地址192.168.0.200,则协调网元10从数据库 列表中获取容器61的公网地址。
[0103] 步骤S706、所述协调网元向所述第一虚拟网桥发送所述目标容器的公网地址,以 使所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以 使所述第二虚拟网桥将所述报文发送给所述目标容器;
[0104] 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网 桥和所述目标容器位于第二Docker服务器。
[0105] 本发明实施例通过第一虚拟网桥给源容器分配私网地址,第一虚拟网桥向协调网 元发送源容器的私网地址和源容器的公网地址,协调网元在数据库列表中存储源容器的私 网地址和源容器的公网地址,保证目标容器通过协调网元可查询获取到源容器的公网地 址,实现了源容器和目标容器的通信。
[0106] 图8为本发明实施例提供的虚拟网桥的结构图。本发明实施例提供的虚拟网桥可 以执行容器间的通信方法实施例提供的处理流程,如图8所示,虚拟网桥80包括发送模块81 和接收模块82,其中,发送模块81用于向协调网元发送地址请求报文,所述地址请求报文包 括目标容器的私网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容 器的公网地址;接收模块82用于接收所述协调网元发送的所述目标容器的公网地址;所述 发送模块81还用于根据所述目标容器的公网地址向其他虚拟网桥发送源容器的报文,以使 所述其他虚拟网桥将所述报文发送给所述目标容器;其中,所述虚拟网桥和所述源容器位 于第一 Docker服务器,所述其他虚拟网桥和所述目标容器位于第二Docker服务器。
[0107] 本发明实施例提供的虚拟网桥可以具体用于执行上述图3所提供的方法实施例, 具体功能此处不再赘述
[0108] 本发明实施例通过在不同的Docker服务器创建虚拟网桥,虚拟网桥为其所在的 Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的容器通过 虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依据对方容 器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分散在不同 Docker服务器上同一个用户的容器之间的通信。
[0109] 图9为本发明另一实施例提供的虚拟网桥的结构图。在上述实施例的基础上,虚拟 网桥80还包括分配模块83,分配模块83用于给所述源容器分配私网地址;发送模块81还用 于向所述协调网元发送所述源容器的私网地址和所述源容器的公网地址,所述源容器的公 网地址包括公网IP地址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址。
[0110] 本发明实施例提供的虚拟网桥可以具体用于执行上述图5所提供的方法实施例, 具体功能此处不再赘述。
[0111] 本发明实施例通过第一虚拟网桥给源容器分配私网地址,第一虚拟网桥向协调网 元发送源容器的私网地址和源容器的公网地址,协调网元在数据库列表中存储源容器的私 网地址和源容器的公网地址,保证目标容器通过协调网元可查询获取到源容器的公网地 址,实现了源容器和目标容器的通信。
[0112] 图10为本发明实施例提供的协调网元的结构图。本发明实施例提供的协调网元可 以执行容器间的通信方法实施例提供的处理流程,如图10所示,协调网元100包括接收模块 101、获取模块102和发送模块103,其中,接收模块101用于接收第一虚拟网桥发送的地址请 求报文,所述地址请求报文包括目标容器的私网地址;获取模块102用于依据所述目标容器 的私网地址获取所述目标容器的公网地址;发送模块103用于向所述第一虚拟网桥发送所 述目标容器的公网地址,以使所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟 网桥发送源容器的报文,以使所述第二虚拟网桥将所述报文发送给所述目标容器;其中,所 述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网桥和所述目标容器 位于第二Docker服务器。
[0113] 本发明实施例提供的协调网元可以具体用于执行上述图6所提供的方法实施例, 具体功能此处不再赘述。
[0114] 本发明实施例通过在不同的Docker服务器创建虚拟网桥,虚拟网桥为其所在的 Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的容器通过 虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依据对方容 器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分散在不同 Docker服务器上同一个用户的容器之间的通信。
[0115] 图11为本发明另一实施例提供的协调网元的结构图。在上述实施例的基础上,获 取模块102包括查询单元1021和确定单元1022,其中,查询单元1021用于依据所述目标容器 的私网地址查询数据库列表,所述数据库列表包括预设容器的私网地址和所述预设容器的 公网地址;确定单元1022用于若所述数据库列表包括与所述目标容器的私网地址匹配的预 设容器的私网地址,则确定所述目标容器的公网地址是所述预设容器的公网地址。
[0116] 所述接收模块101还用于接收所述第一虚拟网桥发送的所述源容器的私网地址和 所述源容器的公网地址,所述源容器的私网地址是所述第一虚拟网桥给所述源容器分配的 私网地址;所述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址;
[0117] 所述协调网元100还包括存储模块104,存储模块104用于将所述源容器的私网地 址和所述源容器的公网地址存储在数据库列表。
[0118] 本发明实施例提供的协调网元可以具体用于执行上述图7所提供的方法实施例, 具体功能此处不再赘述。
[0119] 本发明实施例通过第一虚拟网桥给源容器分配私网地址,第一虚拟网桥向协调网 元发送源容器的私网地址和源容器的公网地址,协调网元在数据库列表中存储源容器的私 网地址和源容器的公网地址,保证目标容器通过协调网元可查询获取到源容器的公网地 址,实现了源容器和目标容器的通信。
[0120] 图12为本发明实施例提供的容器间的通信系统的结构图。本发明实施例提供的容 器间的通信系统可以执行容器间的通信方法实施例提供的处理流程,如图12所示,容器间 的通信系统120包括上述实施例中的虚拟网桥80和上述实施例中的协调网元100。
[0121] 本发明实施例提供的容器间的通信系统可以执行容器间的通信方法实施例提供 的处理流程。
[0122] 综上所述,本发明实施例通过在不同的Docker服务器创建虚拟网桥,虚拟网桥为 其所在的Docker服务器上的容器分配私网地址,分散在不同Docker服务器上同一个用户的 容器通过虚拟网桥从协调网元获取通信对方容器所在Docker服务器的IP地址和端口号,依 据对方容器所在Docker服务器的IP地址和端口号与对方容器通信,实现了在三层网络中分 散在不同Docker服务器上同一个用户的容器之间的通信;通过第一虚拟网桥给源容器分配 私网地址,第一虚拟网桥向协调网元发送源容器的私网地址和源容器的公网地址,协调网 元在数据库列表中存储源容器的私网地址和源容器的公网地址,保证目标容器通过协调网 元可查询获取到源容器的公网地址,实现了源容器和目标容器的通信。
[0123] 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其 它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅 仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结 合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的 相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通 信连接,可以是电性,机械或其它的形式。
[0124] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0125] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0126] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存 储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机 设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个 实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,R0M)、随机存取存储器 (Random Access Memory ,RAM)、磁碟或者光盘等各种 可以存储程序代码的介质。
[0127] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块 的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完 成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上 述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0128] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依 然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进 行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术 方案的范围。
【主权项】
1. 一种容器间的通信方法,其特征在于,包括: 第一虚拟网桥向协调网元发送地址请求报文,所述地址请求报文包括目标容器的私网 地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地址; 所述第一虚拟网桥接收所述协调网元发送的所述目标容器的公网地址; 所述第一虚拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文, 以使所述第二虚拟网桥将所述报文发送给所述目标容器; 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网桥和 所述目标容器位于第二Docker服务器。2. 根据权利要求1所述的方法,其特征在于,所述地址请求报文还包括所述源容器的私 网地址。3. 根据权利要求2所述的方法,其特征在于,所述第一虚拟网桥向协调网元发送地址请 求报文之前,还包括: 第一虚拟网桥给所述源容器分配私网地址; 所述第一虚拟网桥向所述协调网元发送所述源容器的私网地址和所述源容器的公网 地址,所述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址。4. 一种容器间的通信方法,其特征在于,包括: 协调网元接收第一虚拟网桥发送的地址请求报文,所述地址请求报文包括目标容器的 私网地址; 所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地址; 所述协调网元向所述第一虚拟网桥发送所述目标容器的公网地址,以使所述第一虚拟 网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以使所述第二虚拟 网桥将所述报文发送给所述目标容器; 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网桥和 所述目标容器位于第二Docker服务器。5. 根据权利要求4所述的方法,其特征在于,所述协调网元依据所述目标容器的私网地 址获取所述目标容器的公网地址,包括: 所述协调网元依据所述目标容器的私网地址查询数据库列表,所述数据库列表包括预 设容器的私网地址和所述预设容器的公网地址; 若所述数据库列表包括与所述目标容器的私网地址匹配的预设容器的私网地址,则所 述协调网元确定所述目标容器的公网地址是所述预设容器的公网地址。6. 根据权利要求5所述的方法,其特征在于,所述协调网元接收第一虚拟网桥发送的地 址请求报文之前,还包括: 所述协调网元接收所述第一虚拟网桥发送的所述源容器的私网地址和所述源容器的 公网地址,所述源容器的私网地址是所述第一虚拟网桥给所述源容器分配的私网地址;所 述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是所述第一Docker服务器 的IP地址; 所述协调网元将所述源容器的私网地址和所述源容器的公网地址存储在数据库列表。7. -种虚拟网桥,其特征在于,包括: 发送模块,用于向协调网元发送地址请求报文,所述地址请求报文包括目标容器的私 网地址,以使所述协调网元依据所述目标容器的私网地址获取所述目标容器的公网地址; 接收模块,用于接收所述协调网元发送的所述目标容器的公网地址; 所述发送模块还用于根据所述目标容器的公网地址向其他虚拟网桥发送源容器的报 文,以使所述其他虚拟网桥将所述报文发送给所述目标容器; 其中,所述虚拟网桥和所述源容器位于第一Docker服务器,所述其他虚拟网桥和所述 目标容器位于第二Docker服务器。8. 根据权利要求7所述的虚拟网桥,其特征在于,所述地址请求报文还包括所述源容器 的私网地址。9. 根据权利要求8所述的虚拟网桥,其特征在于,还包括: 分配模块,用于给所述源容器分配私网地址; 所述发送模块还用于向所述协调网元发送所述源容器的私网地址和所述源容器的公 网地址,所述源容器的公网地址包括公网IP地址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址。10. -种协调网元,其特征在于,包括: 接收模块,用于接收第一虚拟网桥发送的地址请求报文,所述地址请求报文包括目标 容器的私网地址; 获取模块,用于依据所述目标容器的私网地址获取所述目标容器的公网地址; 发送模块,用于向所述第一虚拟网桥发送所述目标容器的公网地址,以使所述第一虚 拟网桥根据所述目标容器的公网地址向第二虚拟网桥发送源容器的报文,以使所述第二虚 拟网桥将所述报文发送给所述目标容器; 其中,所述第一虚拟网桥和所述源容器位于第一 Docker服务器,所述第二虚拟网桥和 所述目标容器位于第二Docker服务器。11. 根据权利要求10所述的协调网元,其特征在于,所述获取模块包括: 查询单元,用于依据所述目标容器的私网地址查询数据库列表,所述数据库列表包括 预设容器的私网地址和所述预设容器的公网地址; 确定单元,用于若所述数据库列表包括与所述目标容器的私网地址匹配的预设容器的 私网地址,则确定所述目标容器的公网地址是所述预设容器的公网地址。12. 根据权利要求11所述的协调网元,其特征在于,所述接收模块还用于接收所述第一 虚拟网桥发送的所述源容器的私网地址和所述源容器的公网地址,所述源容器的私网地址 是所述第一虚拟网桥给所述源容器分配的私网地址;所述源容器的公网地址包括公网IP地 址和端口号,所述公网IP地址是所述第一 Docker服务器的IP地址; 所述协调网元还包括存储模块,用于将所述源容器的私网地址和所述源容器的公网地 址存储在数据库列表。13. -种容器间的通信系统,其特征在于,包括如权利要求7-9任一项所述的虚拟网桥 以及如权利要求10-12任一项所述的协调网元。
【文档编号】H04L12/46GK106067858SQ201610350477
【公开日】2016年11月2日
【申请日】2016年5月24日 公开号201610350477.1, CN 106067858 A, CN 106067858A, CN 201610350477, CN-A-106067858, CN106067858 A, CN106067858A, CN201610350477, CN201610350477.1
【发明人】田新雪, 马书惠
【申请人】中国联合网络通信集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1