当Docker端口映射出现问题时,可以按照以下步骤进行排查和解决:
# Linux/Mac
sudo lsof -i :<端口号>
# 或
netstat -tulnp | grep <端口号>
# Windows
netstat -ano | findstr :<端口号>
如果端口被占用,可以: - 停止占用端口的服务 - 更换Docker映射的主机端口
docker ps -a
确认容器状态为"Up"且运行时间正常
docker exec -it <容器名或ID> netstat -tulnp
# 或
docker exec -it <容器名或ID> ss -tulnp
# 临时关闭防火墙测试(Linux)
sudo systemctl stop firewalld # CentOS/RHEL
sudo systemctl stop ufw # Ubuntu
# Windows检查防火墙设置
docker inspect <容器名或ID> | grep -i port
docker run -p <主机端口>:<容器端口> <镜像名>
确保映射格式正确,例如:
docker run -p 8080:80 nginx
# 找到占用进程并停止
kill <进程ID>
# Linux添加防火墙规则示例
sudo ufw allow 8080/tcp # Ubuntu
sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload # CentOS/RHEL
确保容器内应用确实监听在映射的容器端口上,必要时修改应用配置文件。
docker logs <容器名或ID>
docker network inspect bridge
docker run --network host <镜像名>
如果以上方法都不能解决问题,可能需要检查Docker守护进程日志或考虑重新安装Docker。