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 ...
随机推荐
- C-Linux_定时器示例使用
#include <stdlib.h> #include <signal.h> ; static struct itimerval oldtv; struct itimerva ...
- Redis的数据结构
Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...
- 解密JavaScript闭包
译者按: 从最简单的计数器开始,按照需求对代码一步步优化,我们可以领会闭包的神奇之处. 原文: Closures are not magic 译者: Fundebug 为了保证可读性,本文采用意译而非 ...
- Dev、GridControl的模糊查询
/// <summary> /// 设置girid为每一列都模糊搜索 /// </summary> /// <param name="gdv"> ...
- VMWAR-workstatuon : 安装win10、server 2008 r2、server 2012 r2
最新版的VMWAR 不是很文档,建议大家还是下载稳定版,截止当前最新版的为15,用了,有点问题. 换成14~ 可以了.(15创建虚拟机安装vmware tools 怎么都安装不了). 关于创建虚拟机, ...
- angular 拼接html 事件无效
主要是要引用$compile方法
- 关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
一.当把Object数组,强转的具体的Integer数组时,会报错. 代码如下: //数组强转报错演示 Object[] numbers = {1,2,3}; Integer[] ints = (In ...
- leetcode-14最长公共前缀
leetcode-14最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower& ...
- PyCharm 在PyCharm中使用GitHub
PyCharm是当前进行Python开发,尤其是Django开发最好的IDE,GitHub是程序员的圣地,几乎人人都在用,就不详细介绍两者了. 本文假设你对PyCharm和Github都有一定的了解, ...
- way.js
(function (root, factory) { if (typeof define === "function" && define.amd) { defi ...