Docker发布libnetwork,着手解决网络问题

云计算
5月1日,Docker发布了自家的容器网络管理项目libnetwork,libnetwork使用Go语言编写,目标是定义一个容器网络模型(CNM),并为应用程序提供一致的编程接口以及网络抽象。目前libnetwork仍在全力开发中,并没有达到使用标准。

5月1日,Docker发布了自家的容器网络管理项目libnetwork,libnetwork使用Go语言编写,目标是定义一个容器网络模型(CNM),并为应用程序提供一致的编程接口以及网络抽象。目前libnetwork仍在全力开发中,并没有达到使用标准。

一个月前,我们宣布SocketPlane团队加入Docker,并且我们承诺将要构建一个健康的网络生态系统。本周,在我们的合作伙伴的帮助下,我们迈出了一大步:开源的libnetwork项目。

什么是libnetwork?

Libnetwork最初是由libcontainer和Docker Engine中的网络相关的代码合并而成的,我们期待Libnetwork能发展为一个跨平台的容器网络包,就像现在的libcontainer那样。

Libnetwork还引入了容器网络模型(CNM),CNM是受该GitHub issue启发,并得到了我们的网络方面的合作伙伴Cisco、IBM、Joyent、Microsoft、Rancher、VMware和Weave的支持。

在生态圈各个合作伙伴的帮助下,我们很快就创建了这个有价值的网络库,希望它可以为所有的容器运行时提供网络支持。

容器网络模型(CNM)

CNM定义了三个新的术语:

Docker发布libnetwork,着手解决网络问题

 

Network Sandbox

Docker容器中一个网络配置的隔离环境。

Endpoint

一个在某个网络上进行网络通讯的接口,Endpoint可以加入一个network,同时,多个Endpoint也可以在一个网络沙盒中共存。

Network

一个network就是一个***的、可识别的endpoint组,组内endpoint可以相互通讯。你可以创建一个『Frontend』和『Backend』network,然后这两个network是完全隔离的。

CNM为Network和容器提供了如下合约:

  • 在相同network上的所有容器都可以随意通讯。
  • 容器之间不同的通信可以使用多个network,它应该被所有的驱动支持。
  • 把一个容器加入到多个network,可以使用容器中的endpoint。
  • 为了提供网络的连通性,endpoint需要加入到Network Sandbox中。

Docker网络基础

为了实现一个可插拔的网络接口,我们首先需要定位网络在Docker平台中的『位置』。这对于我们来说还比较棘手,因为网络功能在Docker Engine和libcontainer中都有。现在,通过ibnetwork和CNM,我们可以创建一些必要的网络API。

引入network后,最令人兴奋的事情就是我们已经使用相同的CNM API重新实现了Docker的bridge网络(docker0),这秉承了我们的『可插拔』理念,这给予了用户完全自由的选择权利。

接下来?

Libnetwork正在全力开发中,我们将会把它加入到Docker的发布节奏中:从Docker 1.7开始,每隔一个月发布一些新的功能。一开始的重点工作包括:

  1. 将libnetwork集成到Docker Engine
  2. 在Docker CLI中使用新的network命令
  3. 撰写『-net』参数的文档,以告知用户如何使用它来为容器指定网络
  4. 在network和endpoint中支持添加『label』
  5. 研发新的『bridge』插件,以替换Docker目前的实现
  6. 研发『分布式bridge』插件,以支持跨容器网络

长远来看,我们的目标还包括:

支持多平台

开发更多的插件以解决目前用户遇到的网络问题
 

责任编辑:Ophira 来源: dockerone
相关推荐

2010-05-05 17:25:38

云计算

2021-09-01 09:40:44

Docker开发人员扩展

2010-04-07 11:00:55

网络基线网络故障

2023-12-13 18:46:51

Docker容器进程

2024-09-18 15:50:59

Docker容器日志

2009-01-14 09:51:46

交换机局域网网络管理

2023-11-13 18:22:14

Docker开发

2009-01-11 10:23:00

网络掉线频繁掉线

2015-09-15 11:29:24

定位Windows 10微软

2017-06-28 10:24:15

2009-10-27 20:53:15

企业网络架构网络规划

2016-03-29 10:29:38

数据产品数据科学创业

2020-03-09 22:12:38

物联网IOT物联网技术

2017-03-28 10:20:24

Docker通信分析

2009-01-15 09:49:00

网络地址切换

2013-11-05 09:32:59

网络问题

2015-08-17 10:19:24

2011-11-23 09:41:32

苹果iOS 5

2009-09-14 09:36:58

Scala 2.7

2010-07-27 09:06:11

Ruby on Rai
点赞
收藏

51CTO技术栈公众号