当前位置: 首页 > 面试题库 >

从Docker容器中访问RDS不能通过安全组?

晏正豪
2023-03-14
问题内容

我正在尝试运行在Docker容器内使用带有EC2的RDS数据库的Web服务器。

我已经设置了安全组,因此允许EC2主机角色访问RDS,并且如果我尝试直接从主机访问RDS,则一切正常。

但是,当我在主机上运行一个简单的容器并尝试访问RDS时,它会被阻止,就像安全组不允许它通过一样。经过一堆反复的试验之后,看来容器请求似乎并非来自EC2主机,因此防火墙拒绝了。

通过在docker容器上设置–net =
host,我可以在短期内解决此问题,但是这破坏了很多很棒的docker网络功能,例如能够映射端口(即,现在我需要确保每个容器实例立即在另一个端口上侦听)。

有没有人找到解决方法?如果您实际上在使用任何AWS资源,那么在AWS中运行容器似乎是一个很大的限制。


问题答案:

弄清楚发生了什么,如果有帮助,请在此处发布。

来自容器内部的请求到达了RDS的公共ip,而不是私有(这是安全组的工作方式)。似乎docker容器中的DNS使用的是8.8.8.8 google
dns,这不会使将rds端点转换为私有ip的AWS魔术。

因此,例如:

DOCKER_OPTS="--dns 10.0.0.2 -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock -g /mnt/docker"


 类似资料:
  • 问题内容: 我需要在Windows 2016 Server上使用Docker / Windows容器并为其准备Windows应用程序才能在其上运行。通过Powershell配置Windows并不像在Ubuntu上那样方便,尤其是如果您从未真正使用过Windows Server并且需要学习所有Powershell命令时,尤其如此;) 是否可以通过GUI访问Windows容器? 可以在Docker,U

  • 我有一个带有Web触发器endpoint的Azure函数设置,我想将其用作React应用程序的后端。没有身份验证设置,它工作正常。当我使用AD设置应用服务身份验证时,当我直接通过浏览器访问时(身份验证后),它工作正常,但当我尝试从提供承载令牌的JS访问时,我得到了401。 客户端应用程序正在Azure上运行,并已注册为Azure AD应用程序。我能够成功地验证、查询AD和使用MS Graph AP

  • 在页面存储Python Flask微服务中,我尝试使用主机名master-db访问MySQL数据库,但该名称无法解析。

  • 问题内容: 我基于两个不同的图像创建了两个docker容器。一个数据库,另一个用于网络服务器。这两个容器都在我的Mac OS X上运行。 我可以从主机访问数据库容器,也可以从主机访问Web服务器。 但是,如何从Web服务器访问数据库连接? 我启动数据库容器的方式是 我开始了wls容器作为 我可以通过连接到主机上的数据库 我可以以以下方式访问主机上的wls: 问题答案: 最简单的方法是使用–link

  • 我基于两个不同的映像创建了两个docker容器。一个是db,另一个是WebServer。这两个容器都在我的mac OSX上运行。 我可以从主机访问db容器,也可以从主机访问webserver。 我可以访问主机上的wls作为

  • 我可以对Docker API进行cUrl调用,但是如果我从容器(docker-comals)运行相同的脚本,我就无法到达任何API终结点。 我的请求如下: 原因可能是使用了localhost,但我现在还找不到解决方案。有什么建议吗? 编辑:下面是我正在使用的堆栈(Api平台)的简要摘要https://api-platform.com/).每个容器都连接到“api_默认”网桥网络: 基于php=Sy