一种Docker网络插件实现方法技术

技术编号:15520661 阅读:30 留言:0更新日期:2017-06-04 10:10
本发明专利技术提供一种Docker网络插件实现方法,属于计算机软件应用领域,当业务场景需要为Docker容器配置宿主机网络IP时,在创建容器时,可以通过指定网络插件名称,调用该网络插件,此时该网络插件会在宿主机网卡创建一对link,用于连接宿主机网络和容器网络,将容器网络代表的link加入容器提供的命名空间,同时为该link配置IP和网关,从而使容器的IP和宿主机IP在同一网段。

Method for implementing Docker network plug-in unit

The invention provides a Docker network plug-in implementation method, which belongs to the application field of computer software, when the business scene requires for the Docker container configuration host IP network, in the creation of a container, you can specify the network plug-in name, call the network plug-in, the plug-in will create a network of link in the host card for connection the host network and container network, the container network on behalf of link added to the container provided at the same time as the configuration of the link namespace, IP and gateway, so that the IP container and the IP host in the same segment.

【技术实现步骤摘要】
一种Docker网络插件实现方法
本专利技术涉及计算机软件应用技术,尤其涉及一种Docker网络插件实现方法。
技术介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。Docker目前存在多种网络模式,包含Bridge模式、Host模式、OverLay模式,但是这些网络模式但是当我们想让Docker容器与宿主机网络在同一地址段时,还没有这种插件机制。前期当我们业务系统需要这种网络模式时,通常做法是在业务层增加业务代码完成,此时存在不少缺陷,例如当我们使用Docker生态其他的开源项目(Compose)进行容器编排时,无法调用业务层实现的IP管理逻辑。Etcd是一个应用在分布式环境下的key/value存储服务,可以在集群中共享信息,读取写入速度很快。当我们在集群环境下,需要使用该网络插件时,可以使用Etcd用于存储网络信息,不同节点的网络插件会共享Etcd存储的网络信息。Docker生态提供了成熟的网络插件机制,用户可以基于Docker生态提供的网络API,自定义自己的业务网络,完成Docker容器网络的分配和回收。
技术实现思路
本专利技术提出了一种Docker网络插件实现方法。解决在生产环境中以Docker网络插件的形式完成容器的IP管理,从而能够更好的使用Docker的容器管理以及Docker生态提供的其他项目。本专利技术的技术方案是:当业务场景需要为Docker容器配置宿主机网络IP时,首先在创建容器时,可以通过指定网络插件名称,调用该网络插件,此时该网络插件会在宿主机网卡创建一对link,用于连接宿主机网络和容器网络,将容器网络代表的link加入容器提供的命名空间,同时为该link配置IP和网关,从而使容器的IP和宿主机IP在同一网段,并保持在容器的生命周期内保持不变。具体步骤如下:A:宿主机创建br0网桥,并将改网桥绑定到eth0,安装1.12版本的DockerB:宿主机运行网络插件,使用docker命令创建网络,指定网络driver为locak,并指定网络详情:dockernetworkcreate--driver=local--gateway=192.168.159.2--subnet=192.168.159.0/24localC:基于docker命令创建容器dockerrun-itd--ip=192.168.159.140--net=local10.110.17.138:5000/centos:6.7D:容器创建成功,登录容器,能够查看到容器IP信息。本方法基于golang语言实现,当需要在集群环境使用该插件时,需要安装Etcd作为共享存储,用于存储网络信息,同时需要在每个宿主机启动插件。在创建网络时,首先检查该网络是否已经创建完成,若未创建,将网络信息保存到Etcd数据库。本专利技术的有益效果是Docker生态系统提供了一种网络插件机制,允许用户将自己定义的网络接入到Docker生态系统,本专利技术基于Docker的网络插件机制,结合Linuxiptables技术实现Docker容器的IP分配和配置,当Docker容器的IP地址需要与宿主机的网络时,可以使用该插件完成自动化配置,减少大量业务层逻辑,并能够与Docker生态保持一致。附图说明图1是集群模式下网络插件部署示意图;图2是容器网络与Link对示意图。具体实施方式下面对本专利技术的内容进行更加详细的阐述:1)本方法环境基于Ubuntu14.04操作系统,宿主机需要创建网络br0,并绑定到eth0,宿主机部署1.12版本的Docker,Docker的监听端口为br0,如下所示:DOCKER_OPTS="$DOCKER_OPTS-Htcp://0.0.0.0:2376-Hunix:///var/run/docker.sock--cluster-store=etcd://127.0.0.1:4001--cluster-advertise=br0:2376"2)本方法基于golang语言实现,当需要在集群环境使用该插件时,需要安装Etcd作为共享存储,用于存储网络信息,同时需要在每个宿主机启动插件,如附图1所示。3)本方法在创建网络时,首先检查该网络是否已经创建完成,若未创建,将网络信息保存到Etcd数据库。4)基于本方法创建容器时,网络插件会从Etcd数据库获取可以使用的IP,并为容器创建一对link,并配置IP,如图2所示。本文档来自技高网...
一种Docker网络插件实现方法

【技术保护点】
一种Docker网络插件实现方法,其特征在于,当业务场景需要为Docker容器配置宿主机网络IP时,先在创建容器时通过指定网络插件名称,调用该网络插件,此时该网络插件会在宿主机网卡创建一对link,用于连接宿主机网络和容器网络,将容器网络代表的link加入容器提供的命名空间,同时为该link配置IP和网关,从而使容器的IP和宿主机IP在同一网段,并保持在容器的生命周期内保持不变。

【技术特征摘要】
1.一种Docker网络插件实现方法,其特征在于,当业务场景需要为Docker容器配置宿主机网络IP时,先在创建容器时通过指定网络插件名称,调用该网络插件,此时该网络插件会在宿主机网卡创建一对link,用于连接宿主机网络和容器网络,将容器网络代表的link加入容器提供的命名空间,同时为该link配置IP和网关,从而使容器的IP和宿主机IP在同一网段,并保持在容器的生命周期内保持不变。2.根据权利要求1所述的方法,其特征在于,具体步骤如下:A:宿主机创建br0网桥,并将改网桥绑定到eth0,安装1.12版本的DockerB:宿主机运行网络插件,使用docker命令创建网络,指定网络driver为locak,并指定网络详情:dockernetworkcreate--...

【专利技术属性】
技术研发人员:王德奎李珂潘峰张烨
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1