美文网首页DockerDockerDocker
docker-compose创建的网段与内网冲突时的解决方法

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

作者: Rethink | 来源:发表于2021-09-12 15:52 被阅读0次

    问题背景

    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创建的网段与内网冲突时的解决方法

        本文链接:https://www.haomeiwen.com/subject/nkktgltx.html