容器间通信的安全控制方法及装置与流程

文档序号:11811904阅读:294来源:国知局
容器间通信的安全控制方法及装置与流程

本发明实施例涉及通信技术领域,尤其涉及一种容器间通信的安全控制方法及装置。



背景技术:

Docker是一个开源的应用容器引擎,在物理主机上安装Docker后,可在Docker的基础上承载多个容器,多个容器之间相互隔离,多个容器共享物理主机的操作系统,各容器可放置并执行不同的应用程序。

将安装有Docker容器的物理主机称为Docker服务器,例如Docker容器1在Docker服务器1中,Docker容器2在Docker服务器2中,当Docker容器1作为客户端需要访问Docker容器2时,Docker容器1创建请求报文,该请求报文的源IP地址是Docker服务器1的IP地址,目的IP地址是Docker服务器2的IP地址。

但是,当Docker容器2从Docker服务器2迁移到其他Docker服务器后,Docker容器1将无法与Docker容器2进行通信,降低了Docker容器之间通信的可靠性,进而无法保证Docker容器之间的定向通信。



技术实现要素:

本发明实施例提供一种容器间通信的安全控制方法及装置,以提高Docker容器之间通信的可靠性,保证Docker容器之间的定向通信。

本发明实施例的一个方面是提供一种容器间通信的安全控制方法,包括:

第一虚拟容器网关接收源Docker容器发送的访问请求,所述访问请求包括目标Docker容器的第一子网地址;

所述第一虚拟容器网关获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述第二虚拟容器网关与所述目标Docker容器对应;

所述第一虚拟容器网关根据所述第二虚拟容器网关的地址信息,将所述访问请求发送给所述第二虚拟容器网关,以使所述第二虚拟容器网关将所述访问请求转发给所述目标Docker容器。

本发明实施例的另一个方面是提供一种容器间通信的安全控制装置,包括:

接收模块,用于接收源Docker容器发送的访问请求,所述访问请求包括目标Docker容器的第一子网地址;

获取模块,用于获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述第二虚拟容器网关与所述目标Docker容器对应;

发送模块,用于根据所述第二虚拟容器网关的地址信息,将所述访问请求发送给所述第二虚拟容器网关,以使所述第二虚拟容器网关将所述访问请求转发给所述目标Docker容器。

本发明实施例提供的容器间通信的安全控制方法及装置,通过虚拟容器网关之间的定向通信,即时源Docker容器和目标Docker容器均发生了迁移,从一个Docker服务器迁移到了另一个Docker服务器,迁移之后源Docker容器和目标Docker容器分别对应的虚拟容器网关发生了变化,但是通过虚拟容器网关之间的定向通信,依然可以实现Docker容器之间的定向通信,保证了Docker容器之间通信的可靠性。

附图说明

图1为本发明实施例提供的容器间通信的安全控制方法流程图;

图2为本发明实施例提供的容器间通信的安全控制方法适用的网络结构图;

图3为本发明另一实施例提供的容器间通信的安全控制方法流程图;

图4为本发明实施例提供的容器间通信的安全控制装置的结构图;

图5为本发明另一实施例提供的容器间通信的安全控制装置的结构图。

具体实施方式

图1为本发明实施例提供的容器间通信的安全控制方法流程图;图2为本发明实施例提供的容器间通信的安全控制方法适用的网络结构图。本发明实施例针对当Docker容器2从Docker服务器2迁移到其他Docker服务器后,Docker容器1将无法与Docker容器2进行通信,降低了Docker容器之间通信的可靠性,进而无法保证Docker容器之间的定向通信,提供了容器间通信的安全控制方法,该方法步骤如下:

步骤S101、第一虚拟容器网关接收源Docker容器发送的访问请求,所述访问请求包括目标Docker容器的第一子网地址;

如图2所示,Docker容器21、Docker容器22和Docker引擎31位于Docker服务器11,Docker引擎32位于Docker服务器12,Docker容器22可从Docker服务器11迁移到Docker服务器12,容器网关40可分别与Docker引擎31和Docker引擎32通信,编排器30可分别与Docker服务器11和Docker服务器12通信。

在本实施例中,容器网关40中可包括多个虚拟容器网关,且容器网关40中虚拟容器网关的个数根据与容器网关40连接的容器所属的子网的个数确定,例如,Docker容器21的子网地址是192.168.0.X,Docker容器22的子网地址是192.168.1.X,若192.168.0.X和192.168.1.X属于不同的子网时,容器网关40中可包括两个虚拟容器网关,两个虚拟容器网关包括第一虚拟容器网关和第二虚拟容器网关,假设第一虚拟容器网关对应Docker容器21,第二虚拟容器网关对应Docker容器22。

本实施例中,Docker容器21是源Docker容器,Docker容器22是目标Docker容器,目标Docker容器的第一子网地址是Docker容器22的子网地址即192.168.1.X。Docker容器21访问Docker容器22,与Docker容器22进行通信。具体的,Docker容器21预先存储有第一虚拟容器网关的IP地址和端口号,Docker容器21向第一虚拟容器网发送访问请求,该访问请求中包括Docker容器22的子网地址即192.168.1.X。

步骤S102、所述第一虚拟容器网关获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述第二虚拟容器网关与所述目标Docker容器对应;

具体地,所述第一虚拟容器网关查询ACL规则,获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述ACL规则包括所述第一虚拟容器网关的地址信息与所述第二虚拟容器网关的地址信息的对应关系。

本实施例中可预先在编排器30中设定第一虚拟容器网关和第二虚拟容器网关通信的访问控制列表(Access Control List,简称ACL)规则,例如该ACL规则允许第一虚拟容器网关和第二虚拟容器网关通信,另外,该ACL规则还可包括第一虚拟容器网关的地址信息与第二虚拟容器网关的地址信息的对应关系,表示第一虚拟容器网关的地址信息与第二虚拟容器网关的地址信息之间可进行通信。

步骤S103、所述第一虚拟容器网关根据所述第二虚拟容器网关的地址信息,将所述访问请求发送给所述第二虚拟容器网关,以使所述第二虚拟容器网关将所述访问请求转发给所述目标Docker容器。

第一虚拟容器网关获取到第二虚拟容器网关的地址信息后,将访问请求发送给第二虚拟容器网关,第二虚拟容器网关查看访问请求中的目标地址是Docker容器22的子网地址即192.168.1.X,则将该访问请求发送给Docker容器22。

另外,本实施例中,第一虚拟容器网关和源Docker容器之间的通信方式可以是隧道方式,第二虚拟容器网关和目标Docker容器之间的通信方式也可以是隧道方式。

本发明实施例通过虚拟容器网关之间的定向通信,即时源Docker容器和目标Docker容器均发生了迁移,从一个Docker服务器迁移到了另一个Docker服务器,迁移之后源Docker容器和目标Docker容器分别对应的虚拟容器网关发生了变化,但是通过虚拟容器网关之间的定向通信,依然可以实现Docker容器之间的定向通信,保证了Docker容器之间通信的可靠性。

图3为本发明另一实施例提供的容器间通信的安全控制方法流程图;如图3所示,在图1所示实施例的基础上,本实施例提供的容器间通信的安全控制方法的具体步骤如下:

步骤S301、所述第一虚拟容器网关给所述源Docker容器分配第二子网地址;

在本实施例中,Docker容器21和Docker容器22在同一个子网中,则第一虚拟容器网关可以给Docker容器21分配第二子网地址如192.168.0.1,也可以给Docker容器22分配第一子网地址如192.168.0.2。

步骤S302、所述第一虚拟容器网关存储所述源Docker容器的第二子网地址;

第一虚拟容器网关存储Docker容器21的第二子网地址192.168.0.1,以及Docker容器22的第一子网地址192.168.0.2。

步骤S303、第一虚拟容器网关接收源Docker容器发送的访问请求,所述访问请求包括目标Docker容器的第一子网地址;

当源Docker容器即Docker容器21需要和目标Docker容器即Docker容器22通信时,通过隧道方式向第一虚拟容器网关发送访问请求,访问请求中包括目标Docker容器的第一子网地址即192.168.0.2,以及源Docker容器的第二子网地址即192.168.0.1。

步骤S304、所述第一虚拟容器网关根据所述目标Docker容器的第一子网地址,确定所述目标Docker容器和所述源Docker容器是否在同一子网内;

第一虚拟容器网关接收到该访问请求后,从访问请求获取目标Docker容器的第一子网地址即192.168.0.2,以及源Docker容器的第二子网地址即192.168.0.1,确定目标Docker容器的第一子网地址和源Docker容器的第二子网地址是否在同一个子网内。

步骤S305、若所述目标Docker容器和所述源Docker容器在同一子网内,则将所述访问请求发送给所述目标Docker容器。

由于192.168.0.2和192.168.0.1在同一个子网内,则第一虚拟容器网关不需要查询与第一虚拟容器网关对应的第二虚拟容器网关,直接将访问请求发送给目标Docker容器即可。

本实施例中,第一虚拟容器网关接收到源Docker容器发送的访问请求后,获取目标Docker容器的第一子网地址,根据目标Docker容器的第一子网地址和源Docker容器的第二子网地址,确定目标Docker容器和源Docker容器是否在同一个子网中,若在,则将访问请求直接发送给目标Docker容器,不需要查询与第一虚拟容器网关对应的第二虚拟容器网关,提高了访问请求的转发效率。

图4为本发明实施例提供的容器间通信的安全控制装置的结构图。本发明实施例提供的容器间通信的安全控制装置可以执行容器间通信的安全控制方法实施例提供的处理流程,如图4所示,容器间通信的安全控制装置40包括:接收模块41、获取模块42、发送模块43,其中,接收模块41用于接收源Docker容器发送的访问请求,所述访问请求包括目标Docker容器的第一子网地址;获取模块42用于获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述第二虚拟容器网关与所述目标Docker容器对应;发送模块43用于根据所述第二虚拟容器网关的地址信息,将所述访问请求发送给所述第二虚拟容器网关,以使所述第二虚拟容器网关将所述访问请求转发给所述目标Docker容器。

本发明实施例提供的容器间通信的安全控制装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例通过虚拟容器网关之间的定向通信,即时源Docker容器和目标Docker容器均发生了迁移,从一个Docker服务器迁移到了另一个Docker服务器,迁移之后源Docker容器和目标Docker容器分别对应的虚拟容器网关发生了变化,但是通过虚拟容器网关之间的定向通信,依然可以实现Docker容器之间的定向通信,保证了Docker容器之间通信的可靠性。

图5为本发明另一实施例提供的容器间通信的安全控制装置的结构图。如图5所示,在图4所示实施例的基础上,获取模块42包括查询单元421、获取单元422,其中,查询单元421用于查询ACL规则;获取单元422用于获取与所述第一虚拟容器网关对应的第二虚拟容器网关的地址信息,所述ACL规则包括所述第一虚拟容器网关的地址信息与所述第二虚拟容器网关的地址信息的对应关系。

容器间通信的安全控制装置40还包括分配模块44和存储模块45,其中,分配模块44用于给所述源Docker容器分配第二子网地址,存储模块45用于存储所述源Docker容器的第二子网地址。

进一步地,所述访问请求还包括所述源Docker容器的第二子网地址;容器间通信的安全控制装置40还包括确定模块46,确定模块46用于根据所述目标Docker容器的第一子网地址,确定所述目标Docker容器和所述源Docker容器是否在同一子网内。

发送模块43还用于所述目标Docker容器和所述源Docker容器在同一子网内时,将所述访问请求发送给所述目标Docker容器。

本发明实施例提供的容器间通信的安全控制装置可以具体用于执行上述图3所提供的方法实施例,具体功能此处不再赘述。

本实施例中,第一虚拟容器网关接收到源Docker容器发送的访问请求后,获取目标Docker容器的第一子网地址,根据目标Docker容器的第一子网地址和源Docker容器的第二子网地址,确定目标Docker容器和源Docker容器是否在同一个子网中,若在,则将访问请求直接发送给目标Docker容器,不需要查询与第一虚拟容器网关对应的第二虚拟容器网关,提高了访问请求的转发效率。

综上所述,本发明实施例通过虚拟容器网关之间的定向通信,即时源Docker容器和目标Docker容器均发生了迁移,从一个Docker服务器迁移到了另一个Docker服务器,迁移之后源Docker容器和目标Docker容器分别对应的虚拟容器网关发生了变化,但是通过虚拟容器网关之间的定向通信,依然可以实现Docker容器之间的定向通信,保证了Docker容器之间通信的可靠性;第一虚拟容器网关接收到源Docker容器发送的访问请求后,获取目标Docker容器的第一子网地址,根据目标Docker容器的第一子网地址和源Docker容器的第二子网地址,确定目标Docker容器和源Docker容器是否在同一个子网中,若在,则将访问请求直接发送给目标Docker容器,不需要查询与第一虚拟容器网关对应的第二虚拟容器网关,提高了访问请求的转发效率。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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