今天碰到一个问题,docker容器内部使用的网段为172.18.0.0/16网段,正好另外有个测试的网段也是172.18.0.0,容器需要连接到这个网段上,由于容器使用网段冲突的原因连接不过。
查看了很多关于docker网络的教程,给出的办法都是修改docker默认网桥docker0的配置,而且还要重启容器和focker服务,非常的麻烦。并且这台机器使用的网桥还不是docker0,而是自动生成的另一个虚拟网桥,图中的br-f284d6dbdbdf。
思考了很久,终于找出一个办法,就是创建一个和br-f284d6dbdbdf这个网桥一样的虚拟网桥,使用命令:
:~# docker network create --subnet=172.30.0.0/16 docker-1 (172.30.0.0/16是我指定的网段,docker-1是我新的网段名)
然后把在172.18.0.0/16网段下的容器迁移过来,确定容器ip网段和使用的网桥名可以用:
:~# docker inspect 容器ID
网段迁移命令:
先连接新的网桥:~# docker network connect docker-1 容器ID
再断开旧的网桥:~# docker network disconnect base_dab 容器ID (base_dab是172.18.0.0网段的网桥名)
完成,接下来验证服务是否正常就行了,不用重启docker容器!