Docker容器运行正常但Nginx无法在外部浏览器访问的问题排查
问题描述
我已部署一个简单的Docker容器,执行命令:
docker run -d -p 8080:80 -d nginx:stable-alpine3.20-perl
通过docker ps -a查看容器状态如下:
root@manual:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 95d7a0079959 nginx:stable-alpine3.20-perl "/docker-entrypoint.…" 38 minutes ago Up 38 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp my_nginx
端口映射配置正常,访问http://localhost:8080/可获取HTML响应,防火墙未启用,容器内部也能访问Nginx且80端口已暴露,但外部浏览器无法打开Nginx页面,请问问题出在哪里?
排查方向
- 主机端口绑定验证:执行
ss -tulnp | grep 8080确认端口是否确实绑定到0.0.0.0,若仅绑定127.0.0.1,外部设备无法访问。 - 云服务商安全组规则:如果主机是云服务器,检查云平台安全组是否开放8080端口的入站流量,多数云平台默认不开放非标准端口。
- 局域网访问规则:若主机在局域网内,外部设备需使用主机的局域网IP而非
localhost访问;若外部设备不在同一局域网,需确认路由器是否配置了对应端口的转发规则。 - Docker网络驱动测试:切换到
host网络模式运行容器(执行docker run -d --network host nginx:stable-alpine3.20-perl),若此时外部能访问,说明bridge网络的转发存在异常。 - 端口占用排查:用
lsof -i :8080或ss -tulnp | grep 8080检查8080端口的实际占用进程,确认是否为Docker进程在监听,排除端口被其他进程抢占的情况。
内容的提问来源于stack exchange,提问作者Satya Asrith
相关产品推荐
相关产品推荐

