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 ...
随机推荐
- 【Java每日一题】20170206
20170120问题解析请点击今日问题下方的“[Java每日一题]20170206”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...
- [转] 快速部署Tomcat项目的Shell脚本
为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...
- JS中数组重排序方法
在数组中有两个可以用来直接排序的方法,分别是reverse()和sort().下面通过本文给大家详细介绍,对js数组重排序相关知识感兴趣的朋友一起看看吧 1.数组中已存在两个可直接用来重排序的方法:r ...
- C# Dev XtraReport 简单测试
using System; using System.Collections.Generic; using System.Linq; using System.Text; using DevExpre ...
- jquery - append prepend after before animate clearQueue stop
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 小tips:HTML DOM中的children和childNodes属性
childNodes 属性 标准的,childNodes 属性返回节点的子节点集合,以 NodeList 对象.包括HTML节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点,只有当 ...
- Mysql 常用数据类型
double:浮点型,double(5,2) 表示最多5位,必须包含两位小数,最大值是 999.99 char:定长字符串类型,char(10) 表示必须放 10 的字节,没有就用空格补充 varch ...
- Python 基于Python实现的ssh兼sftp客户端(下)
基于Python实现的ssh兼sftp客户端 by:授客 QQ:1033553122 otherTools.py #!/usr/bin/env/ python # -*- coding:utf-8 ...
- Centos 7下VMware三台虚拟机Hadoop集群初体验
一.下载并安装Centos 7 传送门:https://www.centos.org/download/ 注:下载DVD ISO镜像 这里详解一下VMware安装中的两个过程 网卡配置 是Add ...
- DAY4(PYTHON)列表的嵌套,range,for
li=['a','b','开心','c'] print(li[2].replace ( ' 心 ', ' kaixin ' ) ) 输出:'a','b','开kaixin','c' li= ['abc ...