使用wget访问本地服务器出现Read Error:Docker部署的Node服务无法访问
故障排查方案
1 确认容器基础运行状态
执行docker ps -a找到绑定5000端口的目标容器,核对STATUS字段是否为Up正常运行状态。若容器已退出,执行docker logs <容器ID>查看启动报错日志定位问题。
2 核对Node应用监听地址
绝大多数同类问题的根因是Node应用默认仅监听容器本地回环地址127.0.0.1,该地址无法被宿主机访问:
- 执行
docker exec -it <容器ID> bash(alpine镜像替换为sh)进入容器内部 - 容器内执行
ss -tlnp查看监听端口,若Node进程监听的是127.0.0.1:5000,修改应用启动配置,将监听地址改为0.0.0.0后重新构建镜像启动即可。
3 验证端口映射规则
执行docker port <容器ID>确认端口映射规则为5000/tcp -> 0.0.0.0:5000,映射规则错误的话重启容器时添加正确的-p 5000:5000参数即可。
4 排查防火墙拦截
云服务器场景下先核对服务商后台安全组是否开放5000端口入站规则,再检查服务器内部防火墙:
- ufw防火墙执行
ufw status确认5000端口已放行 - firewalld防火墙执行
firewall-cmd --list-all确认5000端口已放行
5 确认应用本身可用性
进入容器内部执行wget http://localhost:5000,如果容器内部也无法访问,说明是Node应用自身代码/依赖异常,通过docker logs <容器ID>查看应用运行日志排查报错即可。
内容的提问来源于stack exchange,提问作者SamAko
相关产品推荐
相关产品推荐

