跳转至

使用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

交换机部分

参考: cisco 3560 配置 rip 路由协议

验证

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 路由协议,学习交换机的网络地址,打通了桌面与容器间的网络通信。 不过这种方式适合开发环境,由于安全和网络开销问题并不适用生产环境

回到页面顶部