容器网络管理 libnetwork

Apache
Google Go
Linux
Docker
2015-05-04
叶秀兰

Libnetwork 提供一个原生 Go 实现的容器连接,是容器的网络。libnetwork 的目标是定义一个健壮的容器网络模型(Container Network Model),提供一个一致的编程接口和应用程序的网络抽象。

Libnetwork一开始的代码只是 libcontainer 和 Docker Engine 中网络部分代码的合并,Docker 官方的愿景是希望 libnetwork 能像 libcontainer 一样,成为一个多平台的容器网络基础包。

受之前的一个 GitHub issue 启 发,libnetwork 引入了容器网络模型(CNM)的概念,CNM 定义了三个新的术语,分别是网络沙箱、Endpoint、Network。网络沙箱 指的是在每一个容器中,将会有一个隔离的用于网络配置的环境。Endpoint 是一个网络接口,可用于某一网络上的交流。Network 是一个唯一的且可识别的 Endpoint组。

接下来,Docker 公司将会把 libnetwork 集成到 Docker Engine,并在 Docker CLI 中使用新的网络命令。具体的项目路线图读者可以参考 GitHub

注意:libnetwork 项目正在大力开发中,还不适合日常使用!

使用示例:

// Create a new controller instance
        controller := libnetwork.New()
        // Select and configure the network driver
        networkType := "bridge"
        driverOptions := options.Generic{}
        genericOption := make(map[string]interface{})
        genericOption[options.GenericData] = driverOptions
        err := controller.ConfigureNetworkDriver(networkType, genericOption)
        if err != nil {
                return
        }
        // Create a network for containers to join.
        // NewNetwork accepts Variadic optional arguments that libnetwork and Drivers can make of
        network, err := controller.NewNetwork(networkType, "network1")
        if err != nil {
                return
        }
        // For each new container: allocate IP and interfaces. The returned network
        // settings will be used for container infos (inspect and such), as well as
        // iptables rules for port publishing. This info is contained or accessible
        // from the returned endpoint.
        ep, err := network.CreateEndpoint("Endpoint1")
        if err != nil {
                return
        }
        // A container can join the endpoint by providing the container ID to the join
        // api which returns the sandbox key which can be used to access the sandbox
        // created for the container during join.
        // Join acceps Variadic arguments which will be made use of by libnetwork and Drivers
        _, err = ep.Join("container1",
                libnetwork.JoinOptionHostname("test"),
                libnetwork.JoinOptionDomainname("docker.io"))
        if err != nil {
                return
        }
加载中

评论(2)

咚往咚来
咚往咚来
不明觉厉啊 #libnetwork#
t
tomcatzh
我愚昧,没看懂具体的作用,高手指教下 #libnetwork#

暂无资讯

暂无问答

Cocos2d-x移植到WindowsPhone8移植问题-libNetwork库移植问题

Cocos2d-x提供了libNetwork库的源代码,而且还提供了libNetwork库的源代码Visual Studio 2012工程文件libNetwork.vcxproj,这样就更方便移植了。 提示 有的Cocos2d-x工程模板在解决方案中,已...

2014/11/29 19:05
43
0
Cocos开发中Visual Studio下HttpClient开发环境设置

Cocos2d-x 3.x将与网络通信相关的类集成到libNetwork类库工程中,这其中包括了HttpClient类。我们需要在Visual Studio解决方案中添加libNetwork类库工程。 为了能够在Visual Studio 2012下...

2014/10/31 19:38
112
0
New technique about Docker

libnetwork: - overlay network (vxlan) - wave 存储: - docker volume - volume images - third-party plugins - convoy - REX-Ray - Flock ipvs: 服务的注册以及负载均衡 服务编排: - kun...

2016/07/28 13:22
6
0
全面了解docker,赢在精彩问答中!

全面了解docker,应用场景、容器部署、降低成本、网络策略、安全问题等等,讲解+实战,精彩再现!

2015/11/12 16:45
93
0
calico

calico目前最新版3.1,但是只支持k8s、openstack、OpenShift。只有在2版本才支持docker、mesos等架构,不过calico打算在以后的V3版本中继续支持mesos、docker等架构,所以目前我们就只能使用...

2018/08/27 09:30
95
0
Android下使用ACE开源网络库

最近公司要求将PC平台下的代码移植到Android平台,其中涉及到的ACE开源代码,虽然ACE比较笨重,但由于种种历史原因,我不可能将ACE给踢掉重新开发,故需要解决ACE开源库在Android下的编译和使...

2016/11/03 10:02
100
1
VLC for iOS 编译出现的问题总结

VLC依赖库很多,编译时出现了很多问题,一边总结一边进行。

2016/01/14 19:03
185
1
容器私有云和持续发布都要解决哪些基础问题 第一集

我们在构建基于容器的私有云以及相应的持续发布时,遇到并解决了哪些问题呢?

2015/11/02 22:08
182
0
OSChina 开源周刊第三十三期 —— Node.js 和 io.js 准备合作!

每周技术抢先看,总有你想要的! 开源资讯 Node.js 和 io.js 准备合作!合久必分,分久必合? Nervana 开源深度学习软件,性能超 Facebook、Nvidia产品 B 站建开源工作组 多 APP 使用其开源项...

2015/05/09 22:38
186
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部