Docker跨主机容器访问通信-Open vSwitch

时间:2020-12-21 14:17:43

Open vSwitch是什么

       Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag) 

原理

Docker跨主机容器访问通信-Open vSwitch

什么是GRE隧道

       GRE:通用路由协议封装 
       隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。(点对点的再封装技术)
       网络连接使用双网卡,Host-Only & NAT

操作

  1. 1. 建立ovs网桥
  2. 查看ovs版本
1.sudo ovs-vsctl show

建立一个名为obr0的网桥

1.sudo ovs-vsctl add-br obr0
  1. 2. 添加gre连接,接口名为gre0
1.sudo ovs-vsctl add-port obr0 gre0

为接口设置类型和远程另一台主机的地址192.168.59.104

1.sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.59.104
  1. 3. 配置docker容器虚拟网桥
1.sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
  1. 4. 为虚拟网桥添加ovs接口
1.sudo brctl addif br0 obr0

修改/etc/default/docker,用新建的网桥来代替默认的docker0

1.DOCKER_OPTS="-b=br0"

重启服务sudo service docker restart

  1. 5. 添加不同Docker容器网段路由
1.sudo ip route add 192.168.2.0/24 via 192.168.59.104 dev eth0