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

Posted 老许家的小长工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dockerdocker-compose 自动创建的网桥与局域网冲突解决方案相关的知识,希望对你有一定的参考价值。

背景
为配合网络安全调整,对一部分服务器进行网段隔离,需修改主机IP网段。这其中遇到一个很恶心的事情,因docker0自动生成的网段默认172.17.0.0/16docker-compose网桥自动生成的网段172.18.x.x ,172.19.x.x等,而网络部门规划的网段也是172.18.x.x,导致修改主机网卡地址后,与docker-compose网段冲突,导致服务异常。

相关版本

操作系统版本:CentOS Linux release 7.3.1611 (Core)
Docker版本:Version: 19.03.12
Docker-compose版本:docker-compose version 1.26.2, build eefe0d31

解决方案

先停止 docker-compose 创建的容器

docker-compose -f docker-compose.yml down

一、处理前状态
如下图所示,主机路由表里存在172.18.0.0的网段;

二、修改配置文件

vim /etc/docker/daemon.json
新增以下参数:
{
  "debug" : true,
  "default-address-pools" : [
    {
      "base" : "192.169.0.0/16",
      "size" : 24
    }
  ]
}
wq保存退出。

三、删除docker-compose网桥,重启docker引擎

#删除docker-compose网桥
docker network rm a9c5fecc53c9
#重启docker引擎
systemctl restart docker


如上图,docker-compose的网桥已经没有了。

测试验证

重启运行docker-compose

docker-compose up -d


至此告一段落,方向应该是对的了
继续验证指定compose.yml文件是否一致

此处将IP段调整为172.27.0.0,并且提前停掉了docker-compose
vim /etc/docker/daemon.json
{
  "debug" : true,
  "default-address-pools" : [
    {
      "base" : "172.27.0.0/16",
      "size" : 24
    }
  ]
}

启停命令:

启动
docker-compose -f docker-compose.yml up -d
停止
docker-compose -f docker-compose.yml down -v


查看docker-compose健康状态

友情提示

1、docker-compose启动的时候,会自动创建网桥,正常情况下停止docker-compose会自动移除该网桥;至于最初的环境为什么网桥没有被删除,盲猜一手,估计是非正常命令停止的docker-compose,或docker-compose状态不正常。
2、该方法会将docker0docker-compose都指定到同一网段下,适用环境有限。
3、删除路由表里的配置,是无效的,重启docker引擎后,会重新加载docker network ls下面的网桥信息,所以要从源头删。

尝试过的方法

点击此处,正常情况下可以使用

以上是关于Dockerdocker-compose 自动创建的网桥与局域网冲突解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Linux安装dockerdocker-compose

Dockerdocker-compose安装Mysql

Dockerdocker-compose安装Mysql

Dockerdocker-compose安装 Redis

Dockerdocker-compose安装 Redis

CentOS7离线安装dockerdocker-compose