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

同一EC2实例中不同容器内Web应用与API的连接问题排查

同一EC2实例上两个容器的连通解决方案
  • 确认容器网络归属
    两个容器必须处于同一个Docker网络中才能正常互通。默认的bridge网络虽支持IP访问,但自定义网络更稳定,还能直接通过容器名解析地址。

    • 执行docker network ls列出所有Docker网络
    • 用docker inspect <web容器名>和docker inspect <api容器名>查看两者的网络归属
    • 若不在同一网络,运行docker network connect <目标网络名> <容器名>将两个容器加入同一网络,之后Web容器可直接用API容器名+内部端口访问(例如http://api-service:3000)
  • 检查API服务的监听地址
    很多API服务默认只绑定127.0.0.1,这种情况下仅能在容器内部访问,其他容器无法连通。必须修改为绑定0.0.0.0:

    • 进入API容器,执行curl localhost:<内部端口>确认服务本身正常
    • 修改API的启动参数或配置文件,将监听地址设为0.0.0.0后重启服务
  • 验证容器间直接连通性
    从Web容器内部测试与API容器的连通性:

    • 进入Web容器:docker exec -it <web容器名> bash
    • 用API容器的私有IP+内部端口测试:curl <api容器IP>:<内部端口>
    • 若能通,说明问题出在Web应用的配置上;若不通,回到第一步检查网络归属
  • 排查EC2主机防火墙规则
    如果你是通过EC2私有IP+主机端口访问API,需确保:

    • API容器已完成端口映射(例如docker run -p 8080:3000 api-image,将容器内部3000端口映射到EC2主机的8080端口)
    • EC2主机的iptables/firewalld没有阻止容器网络段的流量(默认Docker bridge网络段为172.17.0.0/16,可临时关闭主机防火墙做测试)
  • 检查Web应用配置细节
    确认Web配置中的API地址没有低级错误:

    • 端口号是否与API容器的内部端口(或映射后的主机端口)一致
    • 协议是否正确(例如API用http,不要误写为https)
    • IP地址或容器名是否存在拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:05:01