Rest AWS-ECS-容器之间的通信-未知主机错误
我有两个码头集装箱Rest AWS-ECS-容器之间的通信-未知主机错误,rest,docker,containers,amazon-ecs,amazon-ecr,Rest,Docker,Containers,Amazon Ecs,Amazon Ecr,我有两个码头集装箱 TestWeb(公开:80) TestAPI(曝光:80) Testweb容器调用TestApi容器。主机可以从端口8080与TestWeb容器通信。主机可以使用8081与TestApi通信 我可以让TestWeb在我的dev box(Windows 10)中调用TestApi,但当我将代码部署到AWS(ECS)时,会出现“未知主机”异常。这两个容器都很好用,我可以单独给它们打电话。但是,当我调用一个使用HttpClient在内部对Container2中的方法进行Rest调用
这两个容器(TestWeb、TestAPI)在AWS ECS中位于相同的任务定义中。当我检查容器时,我会得到每个容器的IP地址。我可以用他们的IP地址从container1 ping container2。但是我不能用container2的名字ping。它给出了“未知主机”错误。AWS不使用Docker compose,但提供了添加任务定义的接口。 需要一起通信的容器可以放在同一个任务定义上。然后,我们还可以在links部分指定将从当前容器调用的容器。可以在任务定义的“主机”部分为每个容器指定其容器名称。一旦我将容器名称添加到“主机”字段中,Container1(TestWeb)就能够与Container2(TestAPI)通信。ECS似乎不在后台使用合法的docker compose,但是,它们的实现确实支持compose V2”功能 这是我刚刚在ECS上运行的撰写文件的一部分,它需要相同的功能,并且出现了与您相同的“无法解析主机”错误。我添加的“链接”修复了弹性容器服务上的主机名解析问题
version: '3'
services:
appserver:
links:
- database:database
- socks-proxy:socks-proxy
这允许我的appserver与数据库
和socks代理
主机名通信。格式为“SERVICE:ALIAS”,可以将它们保持为默认做法
在您的示例中,它将是:
version: '3'
services:
testapi:
links:
- testweb:testweb
testweb:
links:
- testapi:testapi
version: '3'
services:
testapi:
links:
- testweb:testweb
testweb:
links:
- testapi:testapi