libnetwork

2024-03-16 18:18
文章标签 libnetwork

本文主要是介绍libnetwork,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CNM模型定义了libnetwork的工作原理
原来docker的网络相关的代码是直接在docker中的,网络功能也比较简单,对网络的诟病也是比较多,随着docker越来越向平台化发展,将功能组件逐渐从docker中解耦, docker从1.7把网络相关的代码从docker的代码中剥离出来新建了一个libnetwork项目,引入了CNM的网络模型。
CNM网络模型主要引入三个概念: sandbox, endpoint和network。 Sandbox代表的是一个独立的网络栈,有自己的网络接口,路由表等,每个容器有一个sandbox,也就是有个独立的网络栈。在不同的系统下,sandbox的实现不一样,在linux系统下是通过network namespace来实现的,在FreeBSD下是Jail。 Endpoint是sandbox连接到network的端点,也就是一个网络接口,我们容器里面看到的eth0 eth1这样的网口,一个sandbox可以加入到多个网络中,也就有多个endpoint,也就是有多个网口,endpoint的实现也有很多,用得最多的就是veth设备对。 Network用来连接不同的sandbox,实现容器间的通信,是一系列endpoint的集合。Network的实现有很多种,如linux bridge, ovs, vxlan等

sandbox:独立的网络栈

endpoint:连接网络的网口

network:容器互联通信

CNM对象
NetworkController: libnetwork网络管理器,提供API
Driver:  network的具体底层实现,提供api给network
Network:  cnm中network的具体实现,networkcontroller提供了api来创建/删除network
Endpoint:cnm中endpoint的具体实现,是容器内网口的抽象描述
Sandbox: cnm中sandbox的具体实现,代表了容器网络的配置如路由表,网络接口等。每个Sandbox有一个olssandbox。

networkController  比如docker启动的时候就会新建一个network controller, docker通过调用network controller的api来完成网络的管理。
Driver   不同的网络模式对应不同的driver, 我们常见的网络模式如果host模式,对应的driver是host
Network     一个netwo

这篇关于libnetwork的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816305

相关文章

OpenStack-Queens安装本地Zun、kuryr-libnetwork和Zun-ui服务及部署

基于OpenStack-Queens搭建安装本地Zun、kuryr-libnetwork和Zun-ui服务: 以controller和compute双节点搭建OpenStack-Queens为例安装三个服务及部署操作。 一、安装本地Zun服务 Zun是Openstack中提供容器管理服务的组件,Zun的目标是提供统一的Openstack API用于启动和管理容器,支持多种容器技术,包括Dock