未解决
此帖子已超过 5 年
2 Intern
•
4K 消息
0
1339
Docker开源网络管理项目libnetwork简介
Docker开源网络管理项目libnetwork简介
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
介绍
今年 3月份的时候,著名的容器技术供应商Docker收购了SDN(软件定义网络)技术创业公司SocketPlane,以构建一个健康的容器网络生态系统。于是近日在网络合作伙伴Cisco、IBM、Joyent、Microsoft、Rancher、VMware和Weave的帮助下,Docker对外发布了开源项目libnetwork。Libnetwork一开始的代码只是libcontainer和Docker Engine中网络部分代码的合并,Docker官方的愿景是希望libnetwork能像libcontainer一样,成为一个多平台的容器网络基础包。
本文将介绍libnetwork到底和SDN有哪些联系,自身又有哪些特性和功能。
更多信息
SockerPlane:
SocketPlane主要提供多主机容器网络解决方案,主要基于Open vSwitch和Docker,提供给基于容器的云环境下的可编程软件定义网络。其最开始是由4个人创办的,希望该系统能成为Docker生态里重要的一部分。SocketPlane一直没有寻求风险投资的支持,其成功与Docker的成功是息息相关的。现在SocketPlane加入 Docker 显然将会大大促进了 Docker 的进一步发展。
使用SocketPlane的作用是可以在一个逻辑网络内创建多个容器。这样的网络可以存在于一个单处理器的地址空间内,不需要调用网络控制器。开发者不想操作是否是VLANs, VXLANs, Tunnels或者是 TEPs. 对于架构人们最关心的是性能和可靠性。而SocketPlane在socket层面提供了一个网络的抽象层,通过可管理的方式去解决各种网络问题。SocketPlane主要特性:
1. Open vSwitch集成
2. 用于Docker的零配置多主机网络
3. Docker/SocketPlane 集群的无缝扩展
4. 支持多网络
5. 分布式IP地址管理 (IPAM)
SocketPlane多主机下的VXLAN网络示例:
容器网络模型(Container Network Model):
受之前的一个GitHub issue启发,libnetwork引入了容器网络模型(CNM)的概念,CNM定义了三个新的术语,分别是网络沙箱、Endpoint、Network。网络沙箱指的是在每一个容器中,将会有一个隔离的用于网络配置的环境。Endpoint是一个网络接口,可用于某一网络上的交流。Network是一个唯一的且可识别的Endpoint组。
Libnetwork使用Go语言编写,目标除了定义一个容器网络模型(CNM),还为应用程序提供一致的编程接口以及网络抽象。目前libnetwork仍在全力开发中,并没有达到使用标准。
从官方博客中得知,设计这样一个可插拔的网络接口非常困难,因为网络部分的工作涉及Docker Engine和libcontainer。值得高兴的是,现在Docker公司正在使用CNM API重写Docker的bridge网络(docker0)。接下来,Docker公司将会把libnetwork集成到Docker Engine,并在Docker CLI中使用新的网络命令。具体的项目路线图读者可以参考GitHub。
参考
GitHub: docker/libnetwork
Docker博文:Docker Networking takes a step in the right direction
应用于
Docker、SDN