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

Docker Swarm容器内无法连接AWS RDS的问题排查求助

Docker Swarm容器无法解析AWS RDS域名的故障排查

我在EC2实例中搭建了Docker Swarm集群,目前遇到容器内无法连接AWS RDS数据库的问题。

EC2主机执行nslookup xxxxxx.xxxxxxx.eu-west-2.rds.amazonaws.com可正常解析:

Server:         10.0.0.2
Address:        10.0.0.2#53

Non-authoritative answer:
Name:   xxxxxx.xxxxxxx.eu-west-2.rds.amazonaws.com
Address: xxx.x.x.xx

但进入Docker容器内执行相同命令时,解析失败:

Server:         127.0.0.11
Address:        127.0.0.11:53

** server can't find xxxxxx.xxxxxxx.eu-west-2.rds.amazonaws.com: SERVFAIL

RDS与EC2处于同一VPC,且RDS实例为非公开访问,请问可能的故障原因是什么?


可能的故障原因

  • Docker内置DNS转发异常:Docker默认用127.0.0.11作为容器DNS,这个内置服务可能无法正确转发VPC私有域名的查询请求。可以尝试在启动容器时手动指定VPC的DNS服务器(即EC2主机使用的10.0.0.2),通过--dns 10.0.0.2参数,或在Swarm服务的compose文件中添加dns: ["10.0.0.2"]配置。

  • VPC DNS基础配置缺失:检查VPC的enableDnsSupport和enableDnsHostnames是否开启。这两个选项未启用时,容器内无法正常解析AWS私有域名(包括RDS域名)。

  • Swarm overlay网络DNS配置问题:Swarm的overlay网络默认使用内置DNS,若网络未正确继承主机DNS设置,会导致解析失败。可尝试重新创建overlay网络时指定DNS服务器,或通过docker network inspect <network-name>检查现有网络的DNS配置。

  • 安全组/NACL限制DNS流量:尽管RDS和EC2在同一VPC,但容器的DNS请求(53端口UDP/TCP流量)可能被EC2安全组或VPC NACL拦截。需确认EC2实例安全组允许出站到10.0.0.2的53端口流量,同时NACL允许相关DNS数据包通行。

  • RDS私有DNS区域关联异常:AWS RDS的私有域名依赖VPC关联的Route 53私有托管区域解析。若该区域未正确关联当前VPC,或解析记录存在异常,会导致容器内解析失败,可在Route 53中检查私有托管区域的VPC关联状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:09:53