CN107070717B - 一种跨主机的Docker容器通讯的方法 - Google Patents

一种跨主机的Docker容器通讯的方法 Download PDF

Info

Publication number
CN107070717B
CN107070717B CN201710249583.5A CN201710249583A CN107070717B CN 107070717 B CN107070717 B CN 107070717B CN 201710249583 A CN201710249583 A CN 201710249583A CN 107070717 B CN107070717 B CN 107070717B
Authority
CN
China
Prior art keywords
docker
calico
network
docker container
container
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710249583.5A
Other languages
English (en)
Other versions
CN107070717A (zh
Inventor
乔融
晏东
陈宏�
张行才
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Genius Cloud Technology Co Ltd
Original Assignee
Chengdu Genius Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Genius Cloud Technology Co Ltd filed Critical Chengdu Genius Cloud Technology Co Ltd
Priority to CN201710249583.5A priority Critical patent/CN107070717B/zh
Publication of CN107070717A publication Critical patent/CN107070717A/zh
Application granted granted Critical
Publication of CN107070717B publication Critical patent/CN107070717B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种跨主机的Docker容器通讯的方法,其特征在于,包括以下步骤:S1:创建网络模式为Docker Bridge的Docker容器;S2:向所述的Docker容器上添加Calico网络配置;S3:删除所述Docker容器中所述Calico的默认路由;S4:为所述Docker容器中所述Calico相关路由添加策略路由。本发明的有益效果为:本发明采用将Calico和Docker Bridge相结合的开发方式,弥补了Calico在Docker中不能映射端口的缺陷,同时解决了不同主机上的Docker容器相互通讯的问题,使Docker容器既能与外网通讯,又能与内网中不同主机上的Docker容器通讯。

Description

一种跨主机的Docker容器通讯的方法
技术领域
本发明涉及一种Docker容器通讯方法,尤其涉及一种跨主机的Docker容器通讯的方法。
背景技术
目前,目前,现有的容器网络方案有隧道方案、路由方案、CNM(Docker LibnetworkContainer Network Model)阵营、CNI(Container Network Interface)阵营以及Calico。
其中,隧道方案在LaaS层的网络应用比较多,但随着节点规模的增长复杂度也会增长,导致网络问题跟踪起来比较麻烦,因此隧道方案在大规模集群中并不合适;CNM包括Docker Swarm overlay、Macvlan&IP network drivers、Calico、Contiv(from Cisco),Docker Libnetwork的优势就是原生,而且和Docker容器生命周期结合紧密,缺点也可以理解为是原生,被Docker“绑架”;CNI包括Kubernetes、Weave、Macvlan、Flannel、Calico、Contiv、Mesos CNI,CNI的优势是兼容其他容器技术(e.g.rkt)及上层编排系统(Kuberneres&Mesos),而且社区活跃势头迅猛,Kubernetes加上CoreOS主推,缺点是非Docker原生;Calico在CNM和CNI两大阵营都有重要的作用。即有着不俗的性能表现,提供了很好的隔离性,而且还有不错的ACL控制能力。
Calico是一个纯3层的数据中心网络方案,而且无缝集成像OpenStack这种IaaS云架构,能够提供可控的VM、容器、裸机之间的IP通信。通过将整个互联网的可扩展IP网络原则压缩到数据中心级别,Calico在每一个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发,而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播——小规模部署可以直接互联,大规模下可通过指定的BGP route reflector来完成。这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。并且Calico节点组网可以直接利用数据中心的网络结构(无论是L2或者L3),不需要额外的NAT,隧道或者Overlay Network。
docker的网络分为bridge、null、host、user-defined(bridge、overlay、macvlan、network、remote等)。默认采用bridge,我们经常使用docker run-p somePort:contaimerPort来运行容器,这样可以通过宿主机的IP:somePort来访问容器内的应用,但是不同主机之间的容器却不能互通,而我们的应用往往需要多个容器关联,而这些容器很可能不在同一台主机上。
纯粹的calico网络能够实现不同主机之间的容器互通,但是目前不能使用dockerrun(-p)参数,那么怎么采用暴露出容器的端口呢,必须手动配置、管理复杂的iptables规则,简言之,创建一个容器需要添加数条iptables规则,停止、删除一个容器需要删除数条iptables规则
发明内容
本发明提出了一种跨主机的Docker容器通讯的方法,能够克服现有Calico在Docker中使用时,外部网络无法访问所述Docker容器。将Calico和Docker Bridge相结合,弥补了Calico在Docker中的使用缺陷,同时解决了不同主机上的Docker容器相互通讯的问题,从而解决了现有Docker容器在网络通讯上的问题。
本发明的技术方案如下:
一种跨主机的Docker容器通讯的方法,包括以下步骤:
S1:创建网络模式为Docker Bridge的Docker容器;
S2:向所述的Docker容器上添加Calico网络配置;
S3:删除所述Docker容器中所述Calico的默认路由;
S4:为所述Docker容器中所述Calico相关路由添加策略路由。
具体地,所述步骤S1具体为:
S11:在安装了Docker环境的主机上执行docker run命令,创建未导出端口的Docker容器;
S12:在安装了Docker环境的主机上执行docker run–p命令,创建导出了指定端口的Docker容器;
S13:在安装了Docker环境的主机上调用创建Docker容器的API接口;
S14:根据需求,选择性添加指定端口;创建所对应的Docker容器。
具体地,所述步骤S2具体为:
S21:在所述安装了Docker环境的主机上,调用向Docker容器添加网络的接口;
S22:选择相应Calico网络,添加到所述Docker容器中。
具体地,所述步骤S3具体为:
S31:执行相关终端命令ip route delete default via<IP>,删除所述Calico的默认路由。
具体地,所述步骤S4具体为:
S41:为所述Docker容器中的Calico网络添加直连路由;
S42:在所述S41步骤后,将所述Docker容器的Calico网络添加到路由表中;
S43:在所述S42步骤后,将所述Docker容器的Calico网络所在网段添加规则,来自该网段的请求都走S42中所述的路由表;
S44:配置去往所述Docker容器的Calico网络的路由。
综上所述,本发明的有益效果是:
本发明采用将Calico和Docker Bridge相结合的开发方式,弥补了Calico在Docker中不能映射端口的缺陷,同时解决了不同主机上的Docker容器相互通讯的问题,使Docker容器既能与外网通讯,又能与内网中不同主机上的Docker容器通讯。
附图说明
图1是本发明一种跨主机的Docker容器通讯的方法的流程图;
图2是本发明一种跨主机的Docker容器通讯的方法的Docker容器网络通讯级泵的示意图;
图3是本发明一种跨主机的Docker容器通讯的方法的多主机或集群网络通讯示意图
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的例图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便对本发明的理解,首先介绍一下基本概念:
云计算:是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可以是其他服务。
容器:容器是伴随着轻量级虚拟化的发展而诞生的。在传统的虚拟化技术中,由于底层平台的不同,开发人员花费大量的精力去关注资源、网络等等细节配置,降低了开发效率,增加了复杂度和迁移壁垒。容器技术位于裸机或底层操作系统与上层应用之间,屏蔽了底层操作系统的细节,对于应用开发者展现出一致的接口。这样开发人员就不需要再关注与底层之间的调用对接、受限于不同的操作系统。
宿主机:可以提供资源运行多个容器的一个服务器主机实例,宿主机是一台物理服务器,也可以是一台虚拟服务器。
容器网络:连接云计算系统中所有容器实例的整个网络。
如图1所示,一种跨主机的Docker容器通讯的方法,包括以下步骤:
S1:创建网络模式为Docker Bridge的Docker容器;
S2:向所述的Docker容器上添加Calico网络配置;
S3:删除所述Docker容器中所述Calico的默认路由;
S4:为所述Docker容器中所述Calico添加策略路由。
在本发明中,通过在网络模式为Bridge的Docker容器上添加Calico网络配置,并且删除所述Calico的默认路由,解决Bridge和Calico之间的冲突,再在所述Calico上添加策略路由,使所述Docker容器具有了与不同主机上的Docker容器网络互通的能力,由于Docker Bridge本身具有与外网通讯的能力,因此所述容器就具有了即能与外网通讯,又能与不同主机上的Docker容器通讯的能力。
如图2图3所示,,容器网络利用本发明通讯的情况,具体地为,Docker容器与外网通讯时,使用Docker Bridge网络模式,将Docker容器端口导出,是其与外网实现互通,而Docker容器中的Calico网络又使Docker容器可与所述Calico网络所在网段中的所有其他Docker容器互通。
具体地,所述步骤S1具体为:
S11:在安装了Docker环境的主机上执行docker run命令,创建未导出端口的Docker容器;
S12:在安装了Docker环境的主机上执行docker run–p命令,创建导出了指定端口的Docker容器;
S13:在安装了Docker环境的主机上调用创建Docker容器的API接口;
S14:根据需求,选择性添加指定端口;创建所对应的Docker容器。
具体地,所述步骤S2具体为:
S21:在所述安装了Docker环境的主机上,调用向Docker容器添加网络的接口;
S22:选择相应Calico网络,添加到所述Docker容器中。
具体地,所述步骤S3具体为:
S31:执行相关终端命令,删除所述Calico的默认路由。
具体地,所述步骤S4具体为:
S41:为所述Docker容器中的Calico网络添加直连路由;
S42:将所述Docker容器的Calico网络添加到路由表中;
S43:将所述Docker容器的Calico网络所在网段添加规则,来自该网段的请求都走S32中所述的路由表;
S44:配置去往所述Docker容器的Calico网络的路由。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可做出若干改进和润饰,这些改进和润饰也应该视为本发明的保护范围。

Claims (4)

1.一种跨主机的Docker容器通讯的方法,其特征在于,包括以下步骤:
S1:创建网络模式为Docker Bridge的Docker容器;
S2:向所述的Docker容器上添加Calico网络配置;
S3:删除所述Docker容器中所述Calico的默认路由;
S4:为所述Docker容器中所述Calico网络添加策略路由,实现所述Calico网络与其以外Calico网络的通讯;
其中,所述步骤S4具体为:
S41:为所述Docker容器中的Calico网络添加直连路由;
S42:在所述S41步骤后,将所述Docker容器的Calico网络添加到路由表中;
S43:在所述S42步骤后,将所述Docker容器的Calico网络所在网段添加规则,来自该网段的请求都走S42中所述的路由表;
S44:配置去往所述Docker容器的Calico网络的路由。
2.根据权利要求1所述的一种跨主机的Docker容器通讯的方法,其特征在于,所述步骤S1,包括:
S11:在安装了Docker环境的主机上创建未导出端口的Docker容器;
S12:在安装了Docker环境的主机上创建导出了指定端口的Docker容器;
S13:在安装了Docker环境的主机上调用创建Docker容器的API接口;
S14:根据需求,选择性添加指定端口;创建所对应的Docker容器。
3.根据权利要求2所述的一种跨主机的Docker容器通讯的方法,其特征在于,所述步骤S2具体为:
S21:在所述安装了Docker环境的主机上,调用向Docker容器添加网络的接口;
S22:选择相应Calico网络,添加到所述Docker容器中。
4.根据权利要求1所述的一种跨主机的Docker容器通讯的方法,其特征在于,所述步骤S3具体为:
S31:执行终端命令ip route delete default via<IP>,删除所述Calico的默认路由。
CN201710249583.5A 2017-04-17 2017-04-17 一种跨主机的Docker容器通讯的方法 Active CN107070717B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710249583.5A CN107070717B (zh) 2017-04-17 2017-04-17 一种跨主机的Docker容器通讯的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710249583.5A CN107070717B (zh) 2017-04-17 2017-04-17 一种跨主机的Docker容器通讯的方法

Publications (2)

Publication Number Publication Date
CN107070717A CN107070717A (zh) 2017-08-18
CN107070717B true CN107070717B (zh) 2020-03-10

Family

ID=59600237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710249583.5A Active CN107070717B (zh) 2017-04-17 2017-04-17 一种跨主机的Docker容器通讯的方法

Country Status (1)

Country Link
CN (1) CN107070717B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107770066B (zh) * 2017-10-20 2020-06-02 成都精灵云科技有限公司 一种跨主机、跨VLAN、跨集群的Docker容器导流方法
CN109656686A (zh) * 2018-12-17 2019-04-19 武汉烽火信息集成技术有限公司 OpenStack上部署容器云方法、存储介质、电子设备及系统
CN110430234B (zh) * 2019-06-28 2022-03-01 苏州浪潮智能科技有限公司 一种为容器搭建并行信息传递接口集群的方法与装置
CN110611697B (zh) * 2019-08-02 2020-07-07 杭州网银互联科技股份有限公司 一种混合云的网络架构系统及网络部署方法
CN110554905A (zh) * 2019-08-28 2019-12-10 北京奇艺世纪科技有限公司 一种容器的启动方法及装置
CN110572288A (zh) * 2019-11-04 2019-12-13 河南戎磐网络科技有限公司 一种基于可信容器的数据交换方法
CN110572484B (zh) * 2019-11-08 2020-03-20 浩鲸云计算科技股份有限公司 一种基于容器的生产环境仿真方法
CN110995561B (zh) * 2019-12-06 2021-05-07 中国科学院信息工程研究所 基于容器技术的虚拟网络数据通信交互方法与系统
CN111190698B (zh) * 2019-12-30 2022-07-08 江苏艾佳家居用品有限公司 一种在docker swarm群集下隔离网络的方法
CN114979076B (zh) * 2022-05-23 2024-03-29 杭州仟金顶信息科技有限公司 一种面向跨主机容器的扁平化通讯方法
CN115242715A (zh) * 2022-07-20 2022-10-25 成都精灵云科技有限公司 一种基于fc的数据通信方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105376303A (zh) * 2015-10-23 2016-03-02 深圳前海达闼云端智能科技有限公司 一种Docker实现系统及其通信方法
CN105554015A (zh) * 2015-12-31 2016-05-04 北京轻元科技有限公司 多租户容器云计算系统的管理网络及方法
EP3056993A1 (en) * 2015-02-16 2016-08-17 International Business Machines Corporation Enabling an on-premises resource to be exposed to a public cloud application securely and seamlessly

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9800662B2 (en) * 2014-07-16 2017-10-24 TUPL, Inc. Generic network trace with distributed parallel processing and smart caching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3056993A1 (en) * 2015-02-16 2016-08-17 International Business Machines Corporation Enabling an on-premises resource to be exposed to a public cloud application securely and seamlessly
CN105376303A (zh) * 2015-10-23 2016-03-02 深圳前海达闼云端智能科技有限公司 一种Docker实现系统及其通信方法
CN105554015A (zh) * 2015-12-31 2016-05-04 北京轻元科技有限公司 多租户容器云计算系统的管理网络及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"集成Docker和Calico网络";2CTO;《2CTO》;20161017;全文 *

Also Published As

Publication number Publication date
CN107070717A (zh) 2017-08-18

Similar Documents

Publication Publication Date Title
CN107070717B (zh) 一种跨主机的Docker容器通讯的方法
CN102457439B (zh) 一种云计算系统的虚拟交换系统及其虚拟交换方法
US9658899B2 (en) Distributed lock management in a cloud computing environment
US9658876B2 (en) Location-aware virtual service provisioning in a hybrid cloud environment
US10142218B2 (en) Hypervisor routing between networks in a virtual networking environment
KR101912073B1 (ko) 가상화된 네트워크와 비-가상화된 네트워크 간 가상화 게이트웨이
CN109194502B (zh) 多租户容器云计算系统的管理方法
US11637770B2 (en) Invalidating cached flow information in a cloud infrastructure
CN105227454A (zh) 虚拟路由系统及方法
CN112600903B (zh) 一种弹性虚拟网卡迁移方法
CN109039913A (zh) 虚拟路由装置和虚拟机通信系统
JP2024503600A (ja) 仮想化されたクラウド環境におけるレイヤ2ネットワーキングスパンポート
JP2024507142A (ja) サービスプロバイダプライベートネットワークを顧客プライベートネットワークに接続するためのクラウドインフラストラクチャリソース
CN114448978A (zh) 一种网络接入方法、装置、电子设备及存储介质
US20240098088A1 (en) Resource allocation for virtual private label clouds
JP2024503318A (ja) 仮想化されたクラウド環境においてアクセス制御リストを使用するレイヤ2ネットワーキング
US20240143365A1 (en) Initializing a container environment
US20240126581A1 (en) Implementing communications within a container environment
CN118541674A (zh) 发布用于图形处理单元工作负载的物理拓扑网络局部性信息
CN114944971A (zh) Kubernetes部署网络的方法及装置、电子设备和存储介质
US12086625B2 (en) Multiple top-of-rack (TOR) switches connected to a network virtualization device
JP2024507147A (ja) クラウドインフラストラクチャにおけるキャッシュされたフロー情報の無効化
WO2024039522A1 (en) Network architecture for dedicated region cloud at customer
WO2024039521A1 (en) Providing fault-resistance services in a dedicated region cloud at customer
WO2024039519A1 (en) Multiple top-of-rack (tor) switches connected to a network virtualization device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Cross-host Docker container communication method

Effective date of registration: 20200331

Granted publication date: 20200310

Pledgee: Bank of Chengdu science and technology branch of Limited by Share Ltd.

Pledgor: CHENGDU GHOSTCLOUD TECHNOLOGY Co.,Ltd.

Registration number: Y2020510000019

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20210325

Granted publication date: 20200310

Pledgee: Bank of Chengdu science and technology branch of Limited by Share Ltd.

Pledgor: CHENGDU GHOSTCLOUD TECHNOLOGY Co.,Ltd.

Registration number: Y2020510000019

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method of cross host docker container communication

Effective date of registration: 20210329

Granted publication date: 20200310

Pledgee: Bank of Chengdu science and technology branch of Limited by Share Ltd.

Pledgor: CHENGDU GHOSTCLOUD TECHNOLOGY Co.,Ltd.

Registration number: Y2021980002220

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Granted publication date: 20200310

Pledgee: Bank of Chengdu science and technology branch of Limited by Share Ltd.

Pledgor: CHENGDU GHOSTCLOUD TECHNOLOGY CO.,LTD.

Registration number: Y2021980002220