amazon-web-services - ECS on EC2 同一任务中两个容器之间的双向通信

标签 amazon-web-services docker networking amazon-ec2 amazon-ecs

我正在尝试在 EC2 实例上配置 ECS 任务。任务定义中的网络模式为 Bridge
我的任务里面有两个容器,它们应该相互通信。例如ContainerA 向ContainerB 发出请求,ContainerB 向ContainerA 发出请求。
当我使用 docker-compose 时一切正常,容器可以通过它们的名称进行通信。但是当我在 ECS 上部署时,这些容器彼此看不到。部分我可以使用任务定义中的链接解决这个问题,但是,它只能在一个方向上工作,我的意思是如果为两个容器设置链接,我会在创建任务定义期间收到这样的错误消息:

Unable to create a new revision of Task Definition web-app:12 Container links should not have a cycle


很高兴听到任何想法,我错过了什么以及是否真的可能。老实说,我认为一个任务中的容器应该通过容器名称自动通信,尤其是当它们在同一个 Bridge 网络下时。
我知道有一个功能服务发现允许通过名称在服务之间进行通信,但我仍然希望有一个带有两个容器的服务和任务。
感谢您的任何帮助。
ContainerA NETWORK SETTINGS

最佳答案

如果两个容器都定义在同一个任务定义中,它们可以通过 localhost 获得。 :
例如,如果 ContainerA 正在监听端口 8081,而 ContainerB 正在监听端口 8082,则它们可以通过以下方式简单地相互访问:

localhost:8081
localhost:8082
旁注:与具有两个容器的 Kubernetes pod 中的概念相同 - 它们可以通过 localhost 访问
编辑 :这与 awsvpc 相关您可以在 documentation 中看到的网络模式:

containers that belong to the same task can communicate over the localhost interface

关于amazon-web-services - ECS on EC2 同一任务中两个容器之间的双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65747875/

相关文章:

amazon-web-services - 从 AWS Glue 升级到 Amazon Redshift

docker - 在环境之间移动或克隆环境时如何管理相互依赖的 docker 容器

oracle - 使用 docker : "TNS:listener: all appropriate instances are blocking new connections" error 启动 oracle

c# - 是否有关于使用 C# 客户端创建 C++ 聊天服务器的文章或建议?

c# - 如何在网络连接时以及用户登录时接收事件

amazon-web-services - 如何为 lambda/dynamo 创建 cloudformation cloudwatch 警报?

amazon-web-services - aws lambda 函数以及用于在 CloudFormation 中停止和启动 EC2 实例的相应 IAM 角色

firebase - 在哪里保存和读取 DigitalOcean 应用平台的凭证文件?

android - 为什么我的 Android 手机通过未知服务器发送数据?

python - BOTO3:打印特定区域的实例信息