Rest 如何让aws中托管的两个docker容器进行对话?

Rest 如何让aws中托管的两个docker容器进行对话?,rest,amazon-web-services,docker,Rest,Amazon Web Services,Docker,说到docker和aws,我是个笨蛋,所以很可能我遗漏了一些琐碎的东西,但我已经在这个问题上纠缠了很长时间 所以,我有三个docker容器托管在aws中-contA、contB和contC。contA和contB是同一虚拟网络的一部分。contC是一个独立的容器。COTA是运行一个拥有一堆API端点的膝关节炎服务器。contB正在运行oauth服务。contC正在运行nodejs udp服务器。我试图做的是从contC对contA中的端点进行post调用。因此,在udp服务器内部,我只是对“xx

说到docker和aws,我是个笨蛋,所以很可能我遗漏了一些琐碎的东西,但我已经在这个问题上纠缠了很长时间

所以,我有三个docker容器托管在aws中-contA、contB和contC。contA和contB是同一虚拟网络的一部分。contC是一个独立的容器。COTA是运行一个拥有一堆API端点的膝关节炎服务器。contB正在运行oauth服务。contC正在运行nodejs udp服务器。我试图做的是从contC对contA中的端点进行post调用。因此,在udp服务器内部,我只是对“xxx.com/some/endpoint”进行一个fetch post调用。当尝试测试从contC到contA的通信是否有效时,我根据aws中托管的图像创建了容器,映射了适当的公共和私有端口,并启动了容器。但我有个错误说

'FetchError:请求xxx.com/some/endpoint失败,原因:getaddrinfo eNotFind xxx.com xxx.com:443'

我不希望contC成为同一个虚拟网络的一部分。在创建docker容器时,我尝试添加一个从contC到contA的--link。但那没用。任何关于如何解决问题的见解都会非常有用。谢谢

更新 我知道问题在于contC的主机名解析。我可以在Postman上访问这些端点。我还可以ping其他公共端点。有没有办法将容器的/etc/resolv.conf文件配置为将xxx.com解析为xxx.xx.xx.xxx

如果我对这个问题理解正确的话

你不能。

您需要的是从VPC外部联系VPC中的资源。这首先违背了VPC的目的。对!

为了在非专有网络容器和专有网络容器之间建立通信,您可以在两者之间借助API网关

这可能会让你很开心

您现在可以在Amazon中提供对HTTP(S)资源的访问 虚拟私有云(VPC),而不直接向 公共互联网

或其他

将这些端点公开,以便非VPC容器可以访问它们

调试
您能否从笔记本电脑(公共互联网)上访问这些VPC安全端点,
如果是,那么您的非专有网络容器也应该能够这样做
如果没有,那么较差的非专有网络容器如何使用这些端点:(


错误:getaddrinfo ENOTFOUND

另外,看看SO问题,处理相同的错误
因此,两个DNS都无法解析URL(因为,如果我正确理解问题的话,VPC将)

你不能。

你要找的是从VPC外部联系VPC内的资源,这首先违背了VPC的目的,对吧

为了在非专有网络容器和专有网络容器之间建立通信,您可以在两者之间借助API网关

这可能会让你很开心

您现在可以在Amazon中提供对HTTP(S)资源的访问 虚拟私有云(VPC),而不直接向 公共互联网

或其他

将这些端点公开,以便非VPC容器可以访问它们

调试
您能否从笔记本电脑(公共互联网)上访问这些VPC安全端点,
如果是,那么您的非专有网络容器也应该能够这样做
如果没有,那么较差的非专有网络容器如何使用这些端点:(


错误:getaddrinfo ENOTFOUND

另外,看看SO问题,处理相同的错误

因此,两个DNS都无法解析URL(因为,VPC在docker容器中运行,当尝试访问另一个容器中的服务器时,可以向容器的resolv.conf中添加指向某个ip地址的记录。如果该端点是公共的,那么访问同一公共端点应该不会有任何问题

因此,在创建容器时,您需要包含一个--dns='some.ip.address.'选项,该选项告诉容器将xxx.com解析为some.ip.address


docker容器运行-p 8080:80--dns='192.62.0.7'映像名

在docker容器中,当尝试访问另一个容器中的服务器时,可以向容器的resolv.conf添加指向某个ip地址的记录。如果该端点是公共的,那么访问同一公共端点应该不会有任何问题

因此,在创建容器时,您需要包含一个--dns='some.ip.address.'选项,该选项告诉容器将xxx.com解析为some.ip.address


docker container run-p 8080:80--dns='192.62.0.7'image name

xxx.com解析正确吗?如果没有,你能为它添加Route53记录吗?@mcfinnigan是的,它有。我还可以在Postman无OAuth头上从该端点获得响应。xxx.com解析正确吗?如果没有,你能为它添加Route53记录吗?@mcfinnigan是的,我可以是的。我也可以在Postman sans任何OAuth头上从该端点获得响应。感谢您的响应!我明白您的意思,但我不想采用API网关方法。端点是公共的。我可以点击这些端点并在Postman上获得响应。所以就像您所说的,非VPC容器应该能够完成此任务相同但不是。有没有办法编辑容器的resolv.conf,告诉它将xxx.com解析为xxx.xx.xx.xxx?我在Docker文档中遇到过,但不清楚如何配置它。再次感谢!你能登录到非VPC容器,看看它是否能看到internet吗?尝试ping任何像stackoverflow.com这样的网站继续我的最后评论。。…您是否已将端口映射到主机?是的,它可以。它可以解析google.com,但不能解析xxx.com。并且端口映射也是