Docker-Compose 自动建立的网桥与局域网冲突解决方案

环境: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

相关文章
相关标签/搜索