Docker容器中Go Web应用无法访问的问题求助
排查Docker容器端口无法访问的步骤
针对你在Fedora 41上运行Docker Go应用出现的连接重置问题,按以下步骤排查:
1. 验证容器内服务监听地址
容器内的Web服务必须监听0.0.0.0:8080而非仅127.0.0.1,否则宿主机无法通过端口映射访问。
- 启动容器后,执行命令查看端口监听状态:
docker exec $(docker ps -q --filter "ancestor=docker-gs-ping") ss -tulpn - 输出中需包含
LISTEN状态的0.0.0.0:8080,如果仅显示127.0.0.1:8080,需修改应用代码或启动命令绑定0.0.0.0。
2. 检查容器运行日志与状态
- 查看容器完整启动日志,确认服务是否正常启动:
docker logs $(docker ps -q --filter "ancestor=docker-gs-ping") - 检查容器状态是否正常:
docker inspect $(docker ps -q --filter "ancestor=docker-gs-ping") | grep -A5 "State"
3. 排查防火墙(firewalld)限制
Fedora默认启用firewalld,可能阻止Docker端口转发:
- 临时关闭firewalld测试:
关闭后再次尝试sudo systemctl stop firewalldcurl localhost:80,若能访问则需配置firewalld规则:sudo firewall-cmd --add-service=docker --permanent sudo firewall-cmd --reload
4. 检查SELinux策略
Fedora默认开启SELinux,可能拦截Docker端口映射:
- 临时关闭SELinux测试:
若测试有效,可配置SELinux允许Docker端口访问,或添加容器运行参数临时规避:sudo setenforce 0docker run -p 80:8080 --security-opt label=disable docker-gs-ping:latest
5. 测试网络模式排除映射问题
使用host网络模式绕开端口映射,直接验证服务可用性:
docker run --network host docker-gs-ping:latest
然后执行curl localhost:8080,若能访问则说明问题出在端口映射环节(防火墙/SELinux),否则需检查镜像或应用本身。
6. 验证镜像正确性
直接使用官方预构建镜像测试,排除本地构建问题:
docker pull docker/docker-gs-ping docker run -p 80:8080 docker/docker-gs-ping
内容的提问来源于stack exchange,提问作者Kaaredev
相关产品推荐
相关产品推荐

