Docker容器中Dotnet控制器间HTTP调用出现Connection Refused问题排查
容器间调用失败原因及解决方法
核心问题原因
容器内的localhost指向容器自身,而非宿主机。当dashboard-services容器发起http://localhost:7702请求时,实际是尝试访问容器自己的7702端口,而非宿主机映射的7702端口,自然会出现连接拒绝错误。
解决方法
方法1:使用容器名称访问(推荐)
由于两个容器在同一Docker网络中,Docker内置DNS可以直接解析容器名称。修改dashboard-services中调用config-services的地址为http://config-services:80(注意是容器内部暴露的80端口,不是宿主机映射的7702)。
验证方式:进入dashboard-services容器,执行curl http://config-services:80,确认能正常访问config-services的接口。
方法2:使用宿主机局域网IP访问
如果需要通过宿主机映射端口访问,将调用地址替换为宿主机的局域网IP(如http://192.168.1.100:7702),而非localhost。容器通过宿主机IP可以访问到宿主机映射的端口。
方法3:使用自定义Docker网络(更规范)
默认bridge网络虽然可用,但自定义网络的DNS解析更稳定,建议创建专属网络:
- 创建网络:
docker network create app-network - 重新启动容器:
docker run -d -p 7702:80 --network=app-network config-servicesdocker run -d -p 7802:8080 --network=app-network dashboard-services
- 同样使用容器名称
http://config-services:80进行访问。
内容的提问来源于stack exchange,提问作者Chris Phillips
相关产品推荐
相关产品推荐

