# 查网关 docker network inspect bridge | grep Gateway # Linux 启动参数 docker run --add-host=host.docker.internal:host-gateway ...
容器里的应用要连宿主机上的数据库,写 127.0.0.1 一直连接被拒绝。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,容器有独立网络命名空间,127.0.0.1 指向容器自身而不是宿主机。
这次卡住的地方就在「容器访问宿主机」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
处理上按这个顺序:使用宿主在容器网络中的网关地址;或改用可解析的特殊域名;把服务放到同一网络里。
改完只确认一件事:容器内能连通宿主机服务,接口调用返回正常。