环境:

使用docker-compose.yml 部署应用,docker 默认的网络模式是bridge ,默认网段是172.17.0.1/16  ,不巧的是我们局域网也使用的172.22. xx 网段,多次执行docker-compose up -d 部署服务后,自动生成的网桥会依次使用: 172.18.x.x ,172.19.x.x ,直到增加到 172.22.x.x ,悲催的事情发生了,agent 挂了,经过各种排查,发现是docker 生成的网桥与局域网冲突造成的

开始着手解决问题,搜遍了全网,解决方案最多的就是这样的:

第一步 删除原有配置

sudo service docker stop
sudo ip link set dev docker0 down
sudo brctl delbr docker0
sudo iptables -t nat -F POSTROUTING

第二步 创建新的网桥

  

sudo brctl addbr docker0
sudo ip addr add 192.168.0.1/ dev docker0
sudo ip link set dev docker0 up

第三步 配置Docker的文件

注意: 这里是 增加下面的配置

vi /etc/docker/daemon.json
[root@bogon ~]# cat /etc/docker/daemon.json
{
  "bip": "192.168.0.1/24"
}
[root@bogon ~]# systemctl restart docker

但这样操作后没有起到效果,重新生成的网桥,依然是172 17  /18 /19 。。。 这样的,最后采用临时解决方案,使用docker 的 host 网络模式,在docker-compose.yml 文件中增加:
network_mode: "host"

  

但是生产环境不推荐使用host 模式,继续google…… 终于找到了正确的解决方案:

$ vim /etc/docker/daemon.json
{
"debug" : true,
"default-address-pools" : [
{
"base" : "172.31.0.0/16",
"size" :
}
]
}

  

上图看效果:

这才是解决此问题的正确姿势啊,https://github.com/docker/compose/issues/4336

Docker-Compose 自动创建的网桥与局域网冲突解决方案的更多相关文章

  1. Linux系统上安装docker + Compose并创建WordPress

    安装docker可参考我的另一篇文章 安装Compose Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用. 方法一 1 ...

  2. vpn与局域网冲突解决方案

    打开vpn后,所有通过网卡发出去的包都会走vpn,而不会走局域网,所以局域网无法访问,vpn为本机指定路由,让网卡把包发给vpn线路(比如10网段).如果为本机指定到达局域网的路由,访问局域网的包就知 ...

  3. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  4. Docker Compose 实践及梳理

    Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试.生产等环境 文档 Produ ...

  5. Docker学习笔记之常用的 Docker Compose 配置项

    0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...

  6. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

  7. Docker | 第七章:Docker Compose服务编排介绍及使用

    前言 前面章节,我们学习了如何构建自己的镜像文件,如何保存自己的镜像文件.大多都是一个镜像启动.当一个系统需要多个子系统进行配合时,若每个子系统也就是镜像需要一个个手动启动和停止的话,那估计实施人员也 ...

  8. Docker笔记(十二):Docker Compose入门

    1. Compose简介 Docker Compose是Docker官方的用于对Docker容器集群实现编排,快速部署分布式应用的开源项目.Docker Compose通过docker-compose ...

  9. Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

随机推荐

  1. 鼠标悬浮tip 显示

    鼠标悬浮tip 显示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  2. 【mybatis】mybatis中 的# 和 $的区别

    mybatis中 的# 和 $的区别 参考地址:https://www.cnblogs.com/sxdcgaq8080/p/10869144.html

  3. 手动删除SVCH0ST.EXE的方法

        最近几天在办公室的计算机上又发现了一种病毒,在进程管理器中多出了两个进程:SVCH0ST.EXE.IEXPLORE.EXE,经一番查看揭开了它们的真面目,现将清除这种病毒的方法总结如下: 病毒 ...

  4. hdu1021(C++)

    打表找规律,发现是n%4==2就是yes,否则是no #include<iostream>using namespace std;int main(){ int n; while (cin ...

  5. bmp,jpg,png,tif,wmf,emf与eps图片格式转换

    wmf/emf是两种Microsoft Windows的图形文件格式.它是一个矢量图格式,但是也允许包含位图.本质上,一个WMF文件保存一系列可以用来重建图片的Windows GDI命令.在某种程度上 ...

  6. 容器窗口 <QTabWidget>

    ////////////////////////////////////////// #include "test9_2a.h" #include "M_win.h&qu ...

  7. 关于ElasticSearch默认窗口结果集参数max_result_window修改

    在Linux服务器中执行如下命令 curl -XPUT http://192.168.46.163:9200/t_order/_settings -d '{ "index" : { ...

  8. 2017.6.30 使用git新建项目、仓库并拉取、提交代码

    1.在码云上新建一个项目rms 2.在本地指定位置新建仓库,生成.git文件夹 3.同步远程仓库,并拉取最新代码 远程仓库默认名为orgin.可以修改,这里就是用默认名了. 注意:这里使用ssh方式的 ...

  9. Python按行读取文件、写文件

    Python按行读取文件 学习了:https://www.cnblogs.com/scse11061160/p/5605190.html file = open("sample.txt&qu ...

  10. Tomcat 启动或者发布项目时提示Publishing failed:Resource /xxxx does not exist

    解决方法: 刷新一下项目,有可能是磁盘文件和Eclipse项目中文件不一致造成的. 重新启动eclipse 删除tomcat server 重新发布下即可