openvswitch以及docker网络
修改docker0的IP,教程写的是/etc/default/docker文件,但是那是过时的配置,真正的配置是在/etc/docker/daemon.json,格式是json的:
{
"registry-mirror":"http://daocloud.io",
"bip":"10.103.200.1/24",
"fixed-cidr":"10.103.200.0/24",
"insecure-registry":"daocloud.io:5000"
}
安装openvswitch
安装流程可以参看:https://www.cnblogs.com/xkops/p/5568167.html
还需要安装bridge-utils,因为需要brctl。
遇到的问题:
ovs-vsctl: unix:/var/run/openvswitch/db.sock: database connection failed (No such file or directory)
启动方式不正确,之前的方式是service openvswitch start;但是这种方式不够,启动的时候会看到openvswitch-db没有启动的提示;openvswitchd启动成功
还需要通过ovs-ctl来进行启动(见下面的指令);
./home/ovs/rpmbuild/BUILD/openvswitch-2.3./utilities/ovs-ctl start
(停止服务:/home/ovs/rpmbuild/BUILD/openvswitch-2.3./utilities/ovs-ctl stop)
执行ovs-vsctl add-br docker_tunnel2以及sudo ovs-vsctl add-port docker_tunnel gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.56.5的时候,会卡住;报错:
connection attempt failed (Permission denied)
不知原因为何;但是ctrl+c之后,看到其实已经创建成功;
怀疑是这个版本(2.3.2)的bug,于是下载了最新版2.5.4,启动服务后发现爆了异常:
ovs|00003|daemon_unix|EMER|/var/run/openvswitch/ovsdb-server.pid: pidfile check failed (Permission denied), aborting
ovs|00002|db_ctl_base|ERR|unix:/var/run/openvswitch/db.sock: database connection failed (Permission denied)
后来手动执行ovs-ctl的start,问题解决。
/home/ovs/rpmbuild/BUILD/openvswitch-2.3./utilities/ovs-ctl start
说明
本质上,你可以把单机想象成一个局域网,这样,两个网络之间想要通信,就需要把网关设置到对方的机器上面,现在宿主机即使网关,所以A向B的docker通信,需要向A的路由器增加一条静态路由,就是对于通往B的docker的请求的网关是要路由到B的IP上,然后又B的IP(路由器)在转交给B的docker。
什么是网桥呢?顾名思义,网桥的作用是做网络间的桥梁,所以网桥一定是网关,而且A域的网桥是B域的网关。因为网桥是基于链路层的协议,所以网桥及其本网一定要在一个Mac可以发现的网络内。
docker0是一个默认的docker的网桥,没有配置文件,是docker daemon每次启动的时候临时构建的一个网桥;这个网桥的作用就在于将docker和宿主机的网络连接在一起;所以docker可以通过网桥将网络请求发送到宿主机,然后宿主机再把请求发送到Lan中;所以docker默认是可以PING通宿主机网络中的各个节点,但是相反,Lan中的节点却无法PING通docker的IP;所以需要就是让网络节点能够把对于docker的请求路由到 docker所在的宿主机(此时宿主机的角色是网关),然后由宿主机将请求发给docker0(网桥),docker0再给docker的网卡。
下图可以看到,网桥其实是一个连接器,链接的dockerd的网卡以及宿主机的网卡。

openvswitch以及docker网络的更多相关文章
- docker网络配置方法总结
docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...
- 【转】Docker网络详解及pipework源码解读与实践
好文必转 原文地址: http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-prac ...
- Docker网络和容器的通信
Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair). 基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界 ...
- Docker网络 Weave
当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的是自己的私有IP地址,不同主机的容器之间进行通讯需要将主机的端口映射到容器的端口上,而且IP地址需要使用主 ...
- docker——网络配置
一.网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发.同时,Docker随 ...
- docker网络模式----入门docker的难点
众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...
- docker 网络设置概述
docker有3种网络: 使用命令docker network ls,执行结果如下. NETWORK ID NAME DRIVER SCOPE 82e8822065c7 bridge bridge l ...
- Docker系列(五):Docker网络机制(上)
Linux路由机制打通网络 路由机制是效率最好的 docker128上修改Docker0的网络地址,与docker130不冲突 vi /usr/lib/systemd/system/docker.se ...
- Docker 网络详解及 pipework 源码解读与实践
转载自:https://www.infoq.cn/article/docker-network-and-pipework-open-source-explanation-practice/ Docke ...
随机推荐
- HTML5(。。。。不完整)
<!DOCTYPE html> 不区分大小写 <header>.<nav>.<article>.<section>.<sidebar ...
- 【Flask】Sqlalchemy lazy
### 懒加载:在一对多,或者多对多的时候,如果想要获取多的这一部分的数据的时候,往往能通过一个属性就可以全部获取了.比如有一个作者,想要或者这个作者的所有文章,那么可以通过user.articles ...
- java配置文件转义问题
场景: 配置文件config.properties 配置项cfg.regexp=\d+\t 加载配置文件代码 InputStream ins = PropManager ...
- ACM训练小结-2018年6月15日
今天题目情况如下:A题:给出若干条边的边长,问这些边按顺序能否组成一个凸多边形,并求出这个多边形的最小包含圆.答题情况:无思路.正解(某种):第一问很简单.对第二问,如果R大于可行的最小R,那么按照放 ...
- nodejs文件追加内容
const fs = require("fs"); // fs.appendFile 追加文件内容 // 1, 参数1:表示要向那个文件追加内容,只一个文件的路径 // 2, 参数 ...
- INSPIRED启示录 读书笔记 - 第33章 新瓶装老酒
精明的公司至少要手握两件“法宝” 1.对目标市场了如指掌,对现有产品的缺陷洞若观火 2.跟踪最亲的技术趋势.新技术层出不穷,让之前无法实现的方案变得可能
- multi update caused deadlock problem
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/dba45618-1d64-4661-891d-74cab09dddf1/deadlo ...
- java基础(2)-面向对象(2)
构造方法 构造方法特点 方法名与类名相同 方法名前没有返回值类型的声明(void也没有) 方法中不能使用return语句返回一个值 创建对象时自动调用并执行 如果类中没有自定义构造方法,则java调用 ...
- matplotlib中在for中画出多张图
import matplotlib.pyplot as plt import numpy as np fig, axes = plt.subplots(2, 2) def showim(): for ...
- SARG
SARG (Searchable Arguments)操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接. 中文名 SARG 全 称 Searchable ...