启动Docker后无法访问本地/内网 报No route to host如何解决
只要启动Docker,就无法再访问本地/内部网络,网络访问时提示No route to host错误,相关故障情况见如下截图:
故障原因
Docker启动时会自动创建docker0虚拟网桥,默认自动分配的私网网段如果和本地/内部网络使用的网段冲突,会修改系统路由表规则,将原本发往内网的流量转发到Docker虚拟网桥,导致网络不通。
排查确认
- 执行
systemctl stop docker停止Docker服务,测试内网访问是否恢复,排除其他网络配置故障 - 记录本地内网实际使用的网段(常见私网段为10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
- 启动Docker后执行
route -n或ip route查看路由表,能看到冲突网段的下一跳指向了docker0接口
修复步骤
- 编辑Docker守护进程配置文件,文件不存在则直接新建:
vi /etc/docker/daemon.json - 写入以下配置,将
bip和地址池网段替换为和你现有内网完全不冲突的私网段:
{ "bip": "172.20.0.1/16", "default-address-pools": [ { "base": "172.21.0.0/16", "size": 24 } ] }
- 保存配置后重载系统服务、重启Docker生效:
systemctl daemon-reload && systemctl restart docker - 再次查看路由表,确认内网网段路由不再指向
docker0接口,测试内网访问恢复正常。
注意:如果之前创建过自定义Docker网络,需要删除占用冲突网段的自定义网络后重建,否则旧网络的路由规则依然会导致冲突。
内容的提问来源于stack exchange,提问作者stloc
相关产品推荐
相关产品推荐

