运行FIWARE教程docker-compose报地址池重叠错误如何解决?
问题原因
- 核心错误
ERROR: Pool overlaps with other one on this address space和网络名称无关,是你docker-compose配置中硬编码指定的172.18.1.0/24子网网段,已经被宿主机上的其他网络占用,可能是你现有Docker网络列表中的hadig_default,也可能是宿主机的物理网卡、其他虚拟网卡使用了该网段。 - 附带的
WARNING: The host variable is not set属于次要警告,是因为MongoDB健康检查脚本中的$host被docker-compose误识别为需要替换的环境变量,不会阻塞服务启动。
解决方案
- 方案1:修改固定子网配置
将docker-compose中网络部分的子网替换为其他未被占用的私有网段,示例修改如下:
networks: default: ipam: config: - subnet: 172.19.1.0/24
修改完成后重新执行docker-compose up -d即可。
方案2:删除占用网段的闲置网络
先执行docker network inspect hadig_default | grep Subnet确认该网络占用的网段,如果确实是172.18.1.0/24且该网络无正在运行的容器使用,执行docker network rm hadig_default删除该网络后,再重新启动服务。方案3:删除固定子网配置
如果没有强制要求使用固定网段,可以直接删除networks下的IPAM配置,让Docker自动分配可用网段,修改后配置如下:
networks: default: ~
修改后重新启动服务即可。
- 可选:消除host变量警告
如果要去掉附带的警告,只需要将MongoDB健康检查脚本中的$host修改为$$host,告知docker-compose该符号是脚本内部变量,不需要提前解析。
内容的提问来源于stack exchange,提问作者hadi nik
相关产品推荐
相关产品推荐

