docker实现跨主机通信(使用静态路由方式)

您所在的位置:网站首页 ubuntu怎么添加路由 docker实现跨主机通信(使用静态路由方式)

docker实现跨主机通信(使用静态路由方式)

2023-08-27 22:46| 来源: 网络整理| 查看: 265

docker实现跨主机通信 背景准备docker网卡初始化设置静态路由测试网络互通虚拟机a虚拟机b测试网络虚拟机a-容器虚拟机b-容器 清除测试数据删除路由配置删除docker网卡 写在后面

背景

为了合理分配资源,需要将多个服务器的docker容器里面的网络实现互通,如a服务器的docker中启动了服务a,b服务器的docker容器中的b服务需要调用a服务里面的接口。同时要保证不占用宿主机端口,就有了跨主机容器网络互通的需求。

准备

虚拟机a

ip: 192.168.101.150

虚拟机b

ip: 192.168.101.170 docker网卡初始化

分别对两台服务器中的docker创建网卡,分配ip地址范围为 10.20.0.0/16 10.21.0.0/16 虚拟机a

docker network create test --driver bridge --ipam-driver default --subnet 10.20.0.0/16

虚拟机b

docker network create test --driver bridge --ipam-driver default --subnet 10.21.0.0/16 设置静态路由

分别对虚拟机a,虚拟机b设置静态路由,实现虚拟机a可以直接访问虚拟机b的docker test网卡里面的容器,虚拟机b可以直接访问虚拟机a的docker test网卡里面的容器 虚拟机a

route add -net 10.21.0.0 netmask 255.255.0.0 gw 192.168.101.150 #开启路由转发 iptables -P FORWARD ACCEPT

虚拟机b

route add -net 10.20.0.0 netmask 255.255.0.0 gw 192.168.101.170 #开启路由转发 iptables -P FORWARD ACCEPT 测试网络互通 虚拟机a

虚拟机a启动nginx容器

docker run --name nginx --net=test -d nginx:alpine docker exec -ti nginx sh

ip如下 在这里插入图片描述

虚拟机b

虚拟机b启动nginx容器

docker run --name nginx --net=test -d nginx:alpine docker exec -ti nginx sh

ip如下 在这里插入图片描述

测试网络 虚拟机a-容器

ping虚拟机b的宿主机ip 在这里插入图片描述 ping虚拟机b的docker容器中nginx的ip 在这里插入图片描述 curl虚拟机b的docker容器中nginx 在这里插入图片描述

ping同虚拟机的docker容器中其他容器的ip 在这里插入图片描述 在这里插入图片描述

虚拟机b-容器

ping虚拟机a的宿主机ip 在这里插入图片描述 ping虚拟机a的docker容器中nginx的ip 在这里插入图片描述 curl虚拟机a的docker容器中nginx 在这里插入图片描述

清除测试数据 删除路由配置

服务器a

route del -net 10.21.0.0 netmask 255.255.0.0 gw 192.168.101.150

服务器b

route del -net 10.20.0.0 netmask 255.255.0.0 gw 192.168.101.170 删除docker网卡

服务器a

# 停掉启动的容器 docker rm -f nginx docker rm -f nginx1 docker network rm test

服务器b

docker rm -f nginx docker network rm test 写在后面

通过以上场景,就可以实现我们的局域网内的docker容器网络互通。如我们实现docker的cnm规范,然后将路由映射管理起来,则可以实现docker集群化,资源合理使用



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3