当Docker容器端口映射后无法访问时,可能是多种原因导致的。以下是系统性的排查和解决方法:
确认容器正在运行:
docker ps
确保你的容器状态为"Up"
验证端口映射:
docker port <container_name_or_id>
或
docker inspect <container_name_or_id> | grep HostPort
-p
参数
bash
docker run -p 主机端口:容器端口 ...
sudo ufw status
或 iptables -L
sudo ufw allow 端口号
sudo ufw disable
(测试后记得重新启用)bash
docker exec -it 容器名 netstat -tuln
或进入容器检查应用配置0.0.0.0
而不是127.0.0.1
bash
docker run -p 0.0.0.0:主机端口:容器端口 ...
bash
netstat -tuln | grep 端口号
或
bash
lsof -i :端口号
从主机访问容器:
curl 127.0.0.1:主机端口
或
telnet 127.0.0.1 主机端口
从容器内部访问服务:
docker exec -it 容器名 curl 127.0.0.1:容器端口
检查Docker网络:
docker network inspect bridge
尝试使用主机网络模式:
docker run --network host ...
(仅用于测试,不推荐生产环境使用)
docker logs 容器名
查看应用是否有错误输出
如果以上方法都不能解决问题,请提供:
1. 你的docker run
命令或docker-compose文件
2. 主机操作系统信息
3. docker version
输出
4. 具体的错误现象描述
这样我可以提供更有针对性的解决方案。