docker-compose创建的网段与内网冲突时的解决方法

问题背景

Docker启动时会在宿主机上创建一个docker0的虚拟网桥,默认网段为172.17.0.1/16,恰好公司内网VPN使用的是172.18网段,这就导致在使用docker-compose部署的服务时,自动生成的网桥很容易与内网冲突,导致服务无法访问。

解决思路

通过修改配置文件,把 docker0 指定其它网段,同时控制 docker-compose 创建容器时的网段范围。

具体步骤如下:

  1. 修改/etc/docker/daemon.json,添加以下配置(要配置的网段范围根据自身情况进行修改):
"bip": "192.18.0.1/24",
"default-address-pools": [
    {
        "base": "192.168.0.0/16",
        "size": 24
    }
] 

踩坑:

  • 较低版本的docker,不支持default-address-pools配置项,需要先升级Docker版本,具体方法参考此文。
  • 如果只添加bip配置,则只会对docker0网桥生效,并不会对docker-compose新创建的容器生效;
  1. 删除所有不再使用中的docker网桥,并重启docker服务:
$ docker network prune
$ systemctl restart docker
  1. 启动容器,并查看网桥IP
$ docker-compose up -d
$ ifconfig

此时发现容器IP已经在设置的范围内,冲突问题解决。

你可能感兴趣的:(docker-compose创建的网段与内网冲突时的解决方法)