centos7下安装docker(15.1跨主机网络)
之前学习了单个host上的网络,我们知道单个host上的网络有:none,host,bridge和joined,他们解决了单个host上面的容器通信的问题;接下来我们讨论跨主机间容器通信的方案
跨主机的网络方案包括:
1.docker原生的overlay和macvlan
2.第三方方案:常用的包括flannel,weave,calico
docker 网络是一种非常活跃的技术领域,不断有新方案开发出来:
这么多的方案是通过:libnetwork以及CNM与docker集成在一起的
libnetwork&CNM
libnetwork是docker容器网络库,最核心的内容是其定义的container network model(CNM),这个模型对容器网络进行了抽象,由一下三类组件组成:
Sanbox:
Sandbox是容器的网络栈,包括容器的interface,路由表和DNS设置。linux network namespace是Sandbox的标准实现。Sandbox可以包含来自不同network的endpoint
Endpoint
Endpoint的作用是将Sandbox接入network。Endpoint的典型实现是veth pair,后面将举例子。一个Endpoint只能属于一个网络,也只能属于一个Sandbox
Network
network包含一组Endpoint,同一Network的endpoint可以直接通信。Network的实现可以是linux bridge,VLAN等
下面是CNM的示例:自己瞎画的,绝非盗图,哈哈哈
如图所示:有两个容器,一个容器一个Sandbox,第一个容器有两个Endpoint,一个连接到Network1中对应的endpoint1,一个连接到Network2中的endpoint2,这里体现了一个endpoint只能属于一个Sandbox,一个Network,因为endpoint是通过veth pair实现的,要一一对应;第二个容器也有一个Sandbox,endpoint连接到Network2;因为endpoint2与endpoint3都在Network2中,所以两个容器之间能够相互通信
libnetwork CNM 定义了容器的网络模型,按照该模型开发出的driver就能与docker host协同工作,实现容器网络。docker原生的driver包括none,bridge,overlay和macvlan,第三方driver包括flannel,weave,calico等
下面我们以docker bridge driver为例讨论libnetwork CNM是如何实现的
这张图我们在学习单个host网络的时候已经学习过
1.两个Network:默认网络“bridge”和自己创建的my_net2两个网络,实现方式是linux bridge:docker0和br-5d86。。。
2.三个Endpoint,由veth pair实现,一端vethxxx挂在linux bridge上,另一端eth0挂在容器内
3.三个Sandbox,由Network Namespace实现,每个容器有自己的Sandbox
centos7下安装docker(15.1跨主机网络)的更多相关文章
- centos7下安装docker(12.2自定义网络)
通常默认的情况下我们使用的是docker的bridge的网络,用户也可以根据自己的业务需要,创建user-defined docker 提供三种user-defined网络驱动:bridge,over ...
- docker(一) Centos7下安装docker
docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...
- CentOS7下安装docker(Docker系列1)
CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...
- centos7下安装docker与镜像加速
1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...
- centos7下安装docker(15.2跨主机网络-overlay)
为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网 ...
- centos7 下安装docker报错:You could try using...
搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...
- Docker系列04—跨主机网络方案(overlay/weave)
在前面详细讲解了几种网络模式:none,host,bridge,container.他们解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信. 跨主机网络方案包括两大类: 1,docke ...
- centos7下安装docker(15.4跨主机网络-flannel)
flannel是CoreOS开发的容器网络解决方案,flannel为每一个host分配一个subnet,容器从这些subnet中分配IP,这些IP可以在host之间路由,容器无需NAT和port ma ...
- centos7下安装docker(15.6docker跨主机网络---Weave)
Weave是weaveworks开发的容器网络解决方案.weave创建的虚拟网络可以将部署在多个主机上的容器连接起来.对于容器来说,weave就像一个巨大的网络交换机,容器可以直接通信,无需NAT和端 ...
- centos7下安装docker(15.5容器跨主机网络--flanneld)
flannel是由CoreOS研究的一种覆盖网络(overlay network)网络工具,目的是帮助每一个host主机有一个完整的子网: 功能是:让集群中不同节点的主机创建的容器都有一个唯一的虚拟I ...
随机推荐
- web站点和windows服务项目发布时如何排除指定文件
在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和 ...
- C#设计模式之八装饰模式(Decorator Pattern)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第三个模式,该模式是[装饰模式],英文名称:Decorator Pattern.我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧 ...
- Java8 方法引用
概述 方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候, 当我们想要实现一个函数式接口的方法, 但是已 ...
- vue(四)-vuex与组件联合使用
官方定义: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.我的理解就是,vuex就是前端的数据库. 1.首先核心是store,是个仓库,包含着state,因此第一步需要新建一个sto ...
- CSS超全笔记(适合新手入门)
CSS CSS初识 CSS(Cascading Style Sheets) 美化样式 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等 ...
- bitnami_redmine3.3.0-1 问题及备份恢复
1. 服务不见了处理方法: 安装Bitnami Redmine之后,会生成5个与之相关的进程,分别是 redmineApache redmineMySQL redmineSubversion redm ...
- SSIS 包部署错误 0xC0010014
SSIS 包部署错误 0xC0010014 Reinhard 在部署 SSIS 包时,提示如下错误. 由于错误 0xC0010014"发生了一个或多个错误.在此消息之前应有更为具体的错误消息 ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- (后端)spring的@Transactional注解详细用法(转)
转自一人浅醉-博客园: 事务隔离级别 隔离级别是指若干个并发的事务之间的隔离程度.TransactionDefinition 接口中定义了五个表示隔离级别的常量: TransactionDefinit ...
- Spark SQL整体架构
0.整体架构 注意:Spark SQL是Spark Core之上的一个模块,所有SQL操作最终都通过Catalyst翻译成类似的Spark程序代码被Spark Core调度执行,其过程也有Job.St ...