容器网络管理 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 条评论,请先登录后再查看。

暂无资讯

暂无问答

OpenStack容器网络项目Kuryr(libnetwork)

转:https://www.aliyun.com/jiaocheng/518375.html 摘要:容器近几年非常流行,有很多项目都考虑将容器与SDN结合。Kuryr就是其中一个项目。Kuryr项目在OpenStackbigtent下,目的是将容器网络与...

2018/07/10 09:53
25
0
Cocos2d-x移植到WindowsPhone8移植问题-libNetwork库移植问题

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

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

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

2014/10/31 19:38
150
0
Docker 网络之进阶篇

笔者在《Docker 基础 : 网络配置》一文中简单介绍了容器网络的基本用法,当时网络的基本使用方式还处于 --link 阶段。时过境迁,随着 docker 的快速发展,其网络架构也在不断的演进。本文主要...

2018/06/20 08:47
12
0
067、如何部署Calico网络 (2019-04-10 周三)

参考https://www.cnblogs.com/CloudMan6/p/7509975.html Calico 是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是router,把不同host的容器连接起来。与vxlan不同的是...

2019/04/11 19:05
14
0
九、Docker Network

本节将介绍Docker网络的基本原理,比如Container Network Model (CNM) 和libnetwork。 Docker在容器内运行应用程序,这需要在大量不同的网络上进行通信。这意味着Docker需要很强的网络能力。...

2019/06/29 18:54
70
0
Docker 网络背后的原理探索

本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复**「1024」**即可领取,欢迎大家关注,二维码文末可以扫。 知其然而不知其所...

2018/05/28 12:00
35
0
全面了解docker,赢在精彩问答中!

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

2015/11/12 16:45
218
0
Docker孵化的5个开源项目

版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/81977243 回想过去短短的5年时间,容器生态系统和整个社区的创新速度值...

2018/11/02 18:03
7
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
16
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部