You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 firewalld
    
    关闭后再次尝试curl localhost:80,若能访问则需配置firewalld规则:
    sudo firewall-cmd --add-service=docker --permanent
    sudo firewall-cmd --reload
    

4. 检查SELinux策略

Fedora默认开启SELinux,可能拦截Docker端口映射:

  • 临时关闭SELinux测试:
    sudo setenforce 0
    
    若测试有效,可配置SELinux允许Docker端口访问,或添加容器运行参数临时规避:
    docker 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:23:11