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

EC2上Docker容器无法连接RDS,主机及本地容器可正常连接

排查EC2上Docker容器无法连接RDS的方向

1. 核对Docker网络模式配置

  • 检查你的docker-compose.yml中networks字段:默认桥接模式下,容器是否能正常访问外部网络?对比本地环境的配置,看EC2上是否遗漏了网络模式设置(比如本地用了network_mode: host而EC2没配置)。
  • 临时测试:在EC2上执行docker run --network host --rm alpine nc -v <RDS_HOST> 5432启动容器测试连接,如果能通,说明是网络模式的问题。

2. 检查Docker的iptables规则

  • 执行iptables -L -n查看EC2上的iptables规则,确认是否有拦截Docker容器出站到5432端口的规则。
  • 用docker network inspect bridge(如果用默认桥接网络)查看网络配置,对比本地机器的输出,看网关、子网等是否存在差异。

3. 验证EC2的安全组与VPC NACL配置

  • 确认EC2实例的安全组出站规则允许访问RDS的5432端口(可临时设置为允许所有出站,快速排除问题)。
  • 检查VPC的网络访问控制列表(NACL):NACL是无状态的,需确保出站规则允许5432端口,入站规则允许RDS响应的临时端口范围(通常是1024-65535)。

4. 排查容器内的DNS解析问题

  • 进入EC2上的Docker容器,执行cat /etc/resolv.conf查看DNS配置,对比EC2实例内部的DNS设置(cat /etc/resolv.conf),看是否一致。
  • 直接用RDS的IP地址测试:nc -v <RDS_IP> 5432,如果能通,说明是域名解析失败导致的问题;如果仍不通,再排查路由。

5. 检查docker_boot.service的执行环境

  • 服务文件中使用sudo可能导致执行环境与手动操作不同,尝试直接在EC2上执行docker-compose -f /home/ubuntu/metabase/docker-compose.yml up -d --remove-orphans,看容器启动后能否连接RDS,排除服务执行的环境问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:36:28