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 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
Dockerdocker-compose 自动创建的网桥与局域网冲突解决方案