docker网络冲突解决(修改docker_gwbridge网段)

Posted 龙叔运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker网络冲突解决(修改docker_gwbridge网段)相关的知识,希望对你有一定的参考价值。

1·问题

一次生产搭建服务的时候,出现客户端服务器到docker服务断开不通的情况,在docker服务器上抓包可以抓到客户端服务器的包,但是docker服务器不做任何响应

于是ip route 查看本地路由,发现客户端服务器的IP是172.18.X.X,属于docker的docker_gwbridge子网范围,于是并没有走本机的网卡,而是走了docker swarm的网络

 

查了资料  发现docker_gwbridge默认就是使用172.18.0.0/16作为子网范围,所以只能去手动更改docker_gwbridge的网段,避开我们的客户服务器网段

 

2·解决

2.1·第一步:删除docker_gwbridge

删除之前需要将容器都停掉,不然无法删除,因为有容器在使用网络

容器停掉之后,进行删除,执行命令:docker network rm docker_gwbridge

你会发现依然报错说有节点在使用,用下面命令查看谁在使用docker_gwbridge

docker network inspect docker_gwbridge

 

找到之后将其断开连接:docker network disconnect -f docker_gwbridge gateway_ingress-sbox

然后再次执行删除命令就可以删除了: docker network rm docker_gwbridge

 

2.2·第二步:新建docker_gwbridge

使用如下命令创建新的docker_gwbridge,我这里选的网段是192.168.16.0/24

docker network create --subnet 192.168.16.0/24 \\
--opt com.docker.network.bridge.name=docker_gwbridge \\
--opt com.docker.network.bridge.enable_icc=false \\
--opt com.docker.network.bridge.enable_ip_masquerade=true \\
docker_gwbridge

 

这里顺便讲一下如何修改docker0网桥的网段修改方法(一般默认是172.17.0.1/16),只需要修改/etc/docker/daemon.json文件中的bip配置就可以了

vim /etc/docker/daemon.json 修改如下:

{
"bip": "172.17.10.1/24",
"default-address-pools":[
{"base":"192.168.20.0/20","size":24}
]
}

 

这样处理完之后,就会发现docker0和docker_gwbridge两个网桥的网段都已经改成我们想要的了。客户端服务器也可以正常访问docker的服务了

 

 

 

 

以上是关于docker网络冲突解决(修改docker_gwbridge网段)的主要内容,如果未能解决你的问题,请参考以下文章

docker默认网段和主机网段冲突解决

Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

Dockerdocker-compose 自动创建的网桥与局域网冲突解决方案

docker0网卡down影响

Virtual Box 复制虚拟机后网络冲突或者无法启动 问题解决方法

docker-compose创建的网段与内网冲突时的解决方法