![网络问题容器无法访问私有 aws-RDS 数据库](https://linux22.com/image/1614696/%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98%E5%AE%B9%E5%99%A8%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E7%A7%81%E6%9C%89%20aws-RDS%20%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我是使用 docker 和它的术语的新手,所以如果我的术语并不总是正确的,请原谅。
我正在尝试在 Windows 版 Docker 引擎上的 Docker 实例中运行一些代码。此实例执行的操作之一是调用私有的 RDS 实例。为了进行故障排除,我首先确认我可以从 Windows 10 操作系统层连接,成功。接下来,我在同一个 Docker 网络中使用 unbuntu Docker 实例,但失败了(113 网络问题)。该实例正在解析 RDS IP 地址。
然后,我尝试 ping 同一 AWS VPC 中的一些机器。从 Windows 操作系统可以 ping 通,但从 docker 容器不行。我尝试 ping 公共 IP,从两个操作系统都可以 ping 通。
我认为问题与网络有关。缺少从 VPC 返回到我的工作站上的 Docker 容器上的 IP 的路径。我的工作站也知道将这些数据包传递到 Docker 网络,尽管来自公共 IP 的响应使这种情况不太可能发生。
任何信息都可能有帮助。 一个好的docker和网络指南,带有示例,会很棒。
答案1
在当前版本的 Windows 版 Docker Desktop 中,IP 冲突是在 hyper-v 层中生成的。要解决此问题,您需要停止 docker 桌面环境。然后有一个配置文件位于 中%userprofile%\.docker\deamon.json
。我需要更改的设置称为bip
或 Bridge IP。更改并保存后,新的默认桥接 IP 范围不再导致容器内的 IP 冲突。