环境:git
使用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 生成的网桥与局域网冲突形成的github
开始着手解决问题,搜遍了全网,解决方案最多的就是这样的:docker
第一步 删除原有配置json
sudo service docker stop sudo ip link set dev docker0 down sudo brctl delbr docker0 sudo iptables -t nat -F POSTROUTING
第二步 建立新的网桥vim
sudo brctl addbr docker0 sudo ip addr add 192.168.0.1/24 dev docker0 sudo ip link set dev docker0 up
第三步 配置Docker的文件网络
注意: 这里是 增长下面的配置google
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…… 终于找到了正确的解决方案:spa
$ vim /etc/docker/daemon.json { "debug" : true, "default-address-pools" : [ { "base" : "172.31.0.0/16", "size" : 24 } ] }
上图看效果:debug
这才是解决此问题的正确姿式啊,https://github.com/docker/compose/issues/4336rest