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 ...
随机推荐
- Luogu-4774 [NOI2018]屠龙勇士
这题好像只要会用set/平衡树以及裸的\(Excrt\)就能A啊...然而当时我虽然看出是\(Excrt\)却并不会...今天又学了一遍\(Excrt\),趁机把这个坑给填了吧 现预处理一下,找出每条 ...
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...
- [转]Android:改变Activity切换方式
overridePendingTransition(enterAnim, exitAnim); Intent intent =new Intent(this,item2.class); startAc ...
- java菜鸟笔记(一)
- 循环插入一条数据的sql写法
DECLARE @i INTSET @i = 1WHILE @i > 0 BEGIN DECLARE @TransportFormMstID BIGINT; DECLARE @TradeOrde ...
- div css 练习1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 语音01_TTS
1.http://blog.csdn.net/u010176014/article/details/47428595 2.家里 Win7x64 安装“微软TTS5.1语音引擎(中文).msi”之后,搜 ...
- The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files
要解决的话,方法有两个 1)可以选用较低版本的sdk,比如我就用回1.6版本的sdk window->preferences->Java->Installed JREs->Ad ...
- http post上传文件
php.ini中关于文件上传的配置指令: file_uploads = On //是否接受上传的文件 upload_tmp_dir //临时文件保持目录 ...
- spring:使用会话和请求作用域
在Web应用中,如果能够实例化在会话和请求范围内共享的bean,那将是非常有价值的事情.例如,在典型的电子商务应用中,可能会有一个bean代表用户的购物车.如果购物车是单例的话,那么将会导致所有的用户 ...