上一节已经讲了有4种方法可以打通docker跨主机之间的通信。 本文介绍第二种常用的办法: 使用openvswitch打通网络是一种主流的虚拟化技术: 其优点是: 缺点是: 环境准备: 两台装有docker的centos7机器,尽量保证docker的版本相同 * 192.168.0.124
* 192.168.0.121
实验: 1、 centos默认没有ovs的rpm包,因此需要自己下载源码包制作。 wget http:///releases/openvswitch-2.5.0.tar.gz
2、安装必要的依赖环境。一个Base源就搞定了。 yum -y install openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz
kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool
3、解压 tar xf openvswitch-2.5.0.tar.gz .
4、创建编译目录 mkdir -p ~/rpmbuild/SOURCES
5、编译: cp openvswitch-2.5.0.tar.gz rpmbuild/SOURCES/
rpmbuild -bb --without check ~/openvswitch-2.5.0/rhel/openvswitch.spec
6、查看编译好的rpm包: [root@localhost ~]# ls rpmbuild/RPMS/x86_64/
openvswitch-2.5.0-1.x86_64.rpm openvswitch-debuginfo-2.5.0-1.x86_64.rpm
7、安装openvswitch rpm -i openvswitch-2.5.0-1.x86_64.rpm
8、拷贝到另一台机器也安装该软件 9、启动服务: systemctl start openvswitch
10、安装网桥管理工具 yum install bridge-utils -y
11、配置网络,添加br0网桥到docker0。 [root@localhost ~]# ovs-vsctl add-br br0
12、使得容器流量通过ovs流经tunnel,两台主机操作下面的命令是remote_ip写对方主机 [root@localhost ~]# ovs-vsctl add-port br0 gre1 -- set interface gre0 type=gre option:remote_ip=192.168.0.121
13、绑定br0到docker0 [root@localhost ~]# brctl addif docker0 br0
14、 [root@localhost ~]# ip link set dev br0 up
[root@localhost ~]# ip link set dev docker0 up
[root@localhost ~]# iptables -t nat -F ; iptables -F
15、两台主机均执行上述配置,注意IP地址。 16、添加路由: 192.168.0.124添加: ip route add 172.17.0.0/16 dev docker0
192.168.0.121添加:
ip route add 172.20.0.0/16 dev docker0
17、测试: 分别两台主机运行一个容器。 docker run -it --rm busybox
/ # ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=63 time=0.945 ms
docker run -it --rm busybox
/ # ping 172.20.0.2
PING 172.20.0.2 (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=63 time=0.973 ms
64 bytes from 172.20.0.2: seq=1 ttl=63 time=0.508 ms
18、同理要是不通,检查防火墙
|