• openvswitch以及docker网络


      修改docker0的IP,教程写的是/etc/default/docker文件,但是那是过时的配置,真正的配置是在/etc/docker/daemon.json,格式是json的:

    1 {
    2  "registry-mirror":"http://daocloud.io",
    3  "bip":"10.103.200.1/24",
    4  "fixed-cidr":"10.103.200.0/24",
    5  "insecure-registry":"daocloud.io:5000"
    6 }

    安装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.2/utilities/ovs-ctl start
    (停止服务:/home/ovs/rpmbuild/BUILD/openvswitch-2.3.2/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.2/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的网卡以及宿主机的网卡。
          






  • 相关阅读:
    关于以追加模式写入文件时,为什么第一行是空行?
    使用正则表达式的技巧
    super关键字的三种用法
    Excel快捷键
    重载与重写的区别
    方法重名
    区分子类方法中重名的三种变量
    继承
    Chapter08【String类、static、Arrays类、Math类】
    Math类
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/7894625.html
Copyright © 2020-2023  润新知