Windows版Docker运行Linux容器访问localhost报ERR_EMPTY_RESPONSE问题
排查及解决步骤
- 首先确认容器端口映射配置是否正确
执行docker ps查看运行中容器的PORTS列,确认格式为0.0.0.0:5104->[容器内服务端口]/tcp,若你容器内服务实际监听的不是5104端口,需要修改启动命令的端口映射参数,比如容器内服务跑在80端口,启动时要加参数-p 5104:80。 - 验证容器内服务是否正常运行
执行docker exec -it [容器ID/容器名] curl http://localhost:[容器内服务端口],如果执行后无正常响应,说明容器内服务本身启动失败,执行docker logs [容器ID/容器名]查看应用日志排查启动报错。 - 确认Windows本地端口是否被Docker正常监听
打开CMD执行netstat -ano | findstr :5104,如果没有返回监听记录,说明Docker端口转发失败,可尝试重启Docker Desktop后重新启动容器。
如果你使用WSL2作为Docker后端,也可以尝试获取WSL实例的IP直接访问,替换localhost为WSL IP测试连通性 - 检查Windows防火墙拦截规则
临时关闭Windows Defender防火墙后再次访问,如果可以正常打开,需要手动添加入站规则放行5104端口的TCP流量。 - 特殊场景适配(.NET/ASP.NET Core应用)
这类应用默认仅绑定容器内的localhost地址,外部无法访问,启动时需要添加参数指定绑定0.0.0.0,示例:dotnet run --urls http://0.0.0.0:5104,或在Dockerfile的ENTRYPOINT中添加对应配置。
错误截图:
内容的提问来源于stack exchange,提问作者lajili houssem
相关产品推荐
相关产品推荐

