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

容器内FastAPI可正常访问,主机curl遇连接重置问题求助

解决容器内FastAPI主机无法访问的问题

问题描述

我在容器中运行了一个FastAPI实例,遇到以下访问异常:

  • 容器内部访问正常:进入容器执行podman exec -it ${LOCAL_NAME} bash后,执行curl http://localhost:9090能返回正常响应:
root@974b874a42eb:/code# curl http://localhost:9090
{"id":"e80c3468-d6c7-442c-9de4-cc74d4ea1c1f","ts":"2024-07-10T23:44:52.608550+00:00"}
  • 主机端访问失败:执行相同的curl命令出现连接重置错误:
j@fedora:~/Projects$ curl http://localhost:9090
curl: (56) Recv failure: Connection reset by peer

容器启动命令:

podman run -d -p 9090:9090 -v ./app:/code/app:rw -v ./tests:/code/tests:rw --cap-add=ALL --rm --name ${LOCAL_NAME} ${LOCAL_NAME}

FastAPI启动命令(Dockerfile配置):

CMD ["fastapi", "dev", "/code/app/main.py", "--port", "9090", "--host", "0.0.0.0", "--reload"]

已知信息:FastAPI已绑定到0.0.0.0,使用非特权端口9090,旧版本Podman可正常运行。

排查与解决步骤

1. 确认端口映射有效性

先检查容器的端口映射是否正确创建:

podman inspect ${LOCAL_NAME} | grep -A 10 "PortBindings"

正常输出应包含"9090/tcp": [{"HostPort": "9090"}]。若没有,说明端口映射未生效,重启容器时检查命令是否存在拼写错误。

2. 排查主机防火墙与SELinux限制

Fedora默认启用firewalld和SELinux,可能拦截了端口访问:

  • 临时关闭firewalld测试:
    sudo systemctl stop firewalld
    
    若测试可访问,添加永久防火墙规则:
    sudo firewall-cmd --add-port=9090/tcp --permanent
    sudo firewall-cmd --reload
    
  • SELinux权限检查:
    临时设置宽容模式验证:
    sudo setenforce 0
    
    若恢复正常,添加SELinux端口规则:
    sudo semanage port -a -t http_port_t -p tcp 9090
    

3. 验证Podman网络配置

Podman默认使用bridge网络,确认容器是否加入该网络:

podman network inspect bridge | grep -A 5 "Containers"

若容器不在bridge网络,启动时显式指定网络:

podman run -d --network bridge -p 9090:9090 -v ./app:/code/app:rw -v ./tests:/code/tests:rw --cap-add=ALL --rm --name ${LOCAL_NAME} ${LOCAL_NAME}

4. 检查FastAPI实际监听地址

进入容器,确认FastAPI是否真的绑定到0.0.0.0:

ss -tulpn | grep 9090

正常输出应显示0.0.0.0:9090,若为127.0.0.1:9090,说明启动命令未生效,检查Dockerfile是否正确构建,或启动时是否有命令覆盖了CMD配置。

5. 降级Podman版本(临时兼容方案)

如果确认是新版本Podman的兼容性问题,可降级到之前能正常运行的版本:

sudo dnf downgrade podman

后续关注Podman官方更新,等待兼容性修复。

内容的提问来源于stack exchange,提问作者Pompey Magnus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:26:17