多台docker主机中的 容器 网络互通

本文详细介绍如何通过修改Docker配置文件及添加路由规则实现两台服务器上的Docker容器网络互通,包括网段规划、配置文件调整及网络重建等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两台服务器上各有一个docker,现在要两台docker服务器中的容器网络能互通:

我是用docker-compos, 首先规划网段,linux服务器A (192.168.1.100 ) 默认是172.18.0.1/16

1. linux服务器B (192.168.1.200)  docker容器网段改为 172.19.0.1/16

bip 是设置docker0的ip ,就是docker run启动的容器,这里不变还是默认的

default-address-pools 是设置docker-compose 创建的容器的网络 我是用docker-compose所以重点改这里, base 172.19.0.1/16 是说从 172.19.0.1 开始分配,size就是子网掩码 16就是2个字节*8 2个255的意思

 vi /etc/docker/daemon.json 
{
"bip": "172.17.0.1/16",
"default-address-pools": [
    {
        "base": "172.19.0.1/16",
        "size": 16
    }

}

systemctl restart docker

#删除不在使用的网络 ,不然重建网络后ip不变

docker network prune

docker-compose 启动应用

2.添加静态路由(阿里云ECS 要在控制台添加,这么添加无效)

服务器A上执行:

ip route add 172.19.0.0/16 via 192.168.1.200

服务器B上执行:  意思是 访问 服务器A的docker网络要通过网关192.168.1.100转发
ip route add 172.18.0.0/16 via 192.168.1.100

3.大坑 阿里云ECS服务器 需要开启转发链,不然死活ping不通,并且静态路由得去阿里云控制台的路由表添加)

#开启转发链(阿里云默认没开启 查看 iptables -L FORWARD)
iptables -P FORWARD ACCEPT

#开机启动时要自动执行下

在 /etc/rc.d/rc.local 末尾加上 并且 要有x权限: chmod +x /etc/rd.d/rc.local :

iptables -P FORWARD ACCEPT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值