使用RIP协议实现桌面到容器网络通信
2016-09-23 by dongnan
目标
使用 rip
路由协议,学习交换机的网络地址,实现 docker
容器到桌面网络通信。
环境
- 运行时,
Docker 1.10.3
- 宿主机,
CentOS 7.2 amd64
- 物理交换机,
cisco 3560x
- 物理设备网络,
192.168.1.0/16
- 容器虚拟网络,
172.16.1.0/16
操作步骤
Docker部分
已经有爱好者将 quagga
封装Docker镜像,无需任何操作创建容器即可,quagga
支持 bgp/rip
等路由协议。
# 命令行执行
docker pull index.alauda.cn/georce/router
docker run -tid --name=router \
--privileged --net=host \
index.alauda.cn/georce/router
交换机部分
验证
Docker宿主机学习到的网络路由
# 命令行执行
ip route
default via 192.168.10.1 dev eth0 proto static metric 100
172.16.2.0/24 dev docker0 proto kernel scope link src 172.16.2.1
172.16.3.0/24 via 192.168.10.203 dev eth0 proto zebra metric 20
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.202 metric 100
192.168.11.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
192.168.12.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
192.168.13.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
192.168.14.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
192.168.15.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
192.168.16.0/24 via 192.168.10.1 dev eth0 proto zebra metric 2
创建一个测试容器
# 命令行执行
docker run -tid --name test \
-v /data/var:/work/var:ro \
hub-dev.ywwd.net/zongming/cnp:1.1
测试网络通信
# 172.16.3.3 是创建的测试容器IP地址
traceroute -n 172.16.3.3
# 返回结果
traceroute to 172.16.3.3 (172.16.3.3), 30 hops max, 60 byte packets
1 192.168.11.1 8.693 ms 8.887 ms 9.122 ms
2 192.168.10.203 0.481 ms 0.490 ms 0.487 ms
3 172.16.3.3 0.876 ms 0.870 ms 0.860 ms
经过3跳到达目的地址,IP192.168.11.1
是三层交换机Vlan
地址,IP192.168.10.203
是docker宿主机地址。
小结
通过quagga
容器使用 rip
路由协议,学习交换机的网络地址,打通了桌面与容器间的网络通信。
不过这种方式适合开发环境,由于安全和网络开销问题并不适用生产环境。