背景:
为配合网络安全调整,对一部分服务器进行网段隔离,需修改主机IP网段。这其中遇到一个很恶心的事情,因docker0
自动生成的网段默认172.17.0.0/16
,docker-compose
网桥自动生成的网段172.18.x.x ,172.19.x.x
等,而网络部门规划的网段也是172.18.x.x
,导致修改主机网卡地址后,与docker-compose
网段冲突,导致服务异常。
相关版本
操作系统版本:CentOS Linux release 7.3.1611 (Core)
Docker
版本:Version: 19.03.12
Docker-compose
版本:docker-compose version 1.26.2, build eefe0d31
解决方案
先停止 docker-compose
创建的容器
docker-compose -f docker-compose.yml down
一、处理前状态
如下图所示,主机路由表里存在172.18.0.0
的网段;
二、修改配置文件
vim /etc/docker/daemon.json
新增以下参数:
{
"debug" : true,
"default-address-pools" : [
{
"base" : "192.169.0.0/16",
"size" : 24
}
]
}
wq保存退出。
三、删除docker-compose网桥,重启docker引擎
#删除docker-compose网桥
docker network rm a9c5fecc53c9
#重启docker引擎
systemctl restart docker
如上图,docker-compose
的网桥已经没有了。
测试验证
重启运行docker-compose
docker-compose up -d
至此告一段落,方向应该是对的了
继续验证指定compose.yml文件是否一致
此处将IP段调整为172.27.0.0,并且提前停掉了docker-compose
vim /etc/docker/daemon.json
{
"debug" : true,
"default-address-pools" : [
{
"base" : "172.27.0.0/16",
"size" : 24
}
]
}
启停命令:
启动
docker-compose -f docker-compose.yml up -d
停止
docker-compose -f docker-compose.yml down -v
查看docker-compose健康状态
友情提示
1、docker-compose
启动的时候,会自动创建网桥,正常情况下停止docker-compose
会自动移除该网桥;至于最初的环境为什么网桥没有被删除,盲猜一手,估计是非正常命令停止的docker-compose
,或docker-compose
状态不正常。
2、该方法会将docker0
和docker-compose
都指定到同一网段下,适用环境有限。
3、删除路由表里的配置,是无效的,重启docker
引擎后,会重新加载docker network ls
下面的网桥信息,所以要从源头删。