ECS bridge 网络模式的行为与 docker 网络不一致

0

【以下的问题经过翻译处理】 在ECS 的开发人员指南中...

如果网络模式是桥接,则任务会利用在每个容器实例中运行的 Docker 内置的虚拟网络。

这似乎 100% 是错误的。如果这是真的,那么如果我在任何应用程序中引用名为“ database”的容器,它将解析为一个 IP;即表现得像为我创建了一条 A 记录。

有什么我可以控制的东西使它不像 Docker 网络那样工作吗?

profile picture
专家
已提问 5 个月前21 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果您的两个容器都在同一个 EC2 节点上运行,那么 iirc,您应该能够解决这个问题(自从我上次使用桥接模式与 ECS 以来已经有很长时间了)。

但是,话虽如此,我建议不要使用桥接模式(除非有充分的理由使用它,即保持与在 ECS Anywhere 中运行的兼容性)?

我强烈建议转而使用 AWSVPC 网络模式,这将允许您从ECS和Fargate这两种模式切换时, 服务间的网络可访问性不需要做任何更改.(建议每个服务一个安全组).使用 AWSVPC 模式时,同一主机上运行的容器之间具有高级别的网络隔离,从安全角度来看,这非常有价值。

要维护类似 docker-compose 的服务命名以相互通信,您可以使用 AWS CloudMap,它将自动与 ECS 一起注册您的任务并相应地关联 DNS 记录以允许这种 DNS 名称解析。

如果您今天在本地使用 docker-compose 并且想要一种方法来执行 docker-compose up 但针对 AWS ECS,请尝试 ECS Compose-X 处理网络配置、服务到服务入口、其他 AWS 资源、IAM 等。请参阅示例/演练 此处

与 Copilot 相比的优势在于,您可以保持完整的 docker-compose 语法兼容性,以便从本地到云端。我们每天都在 dev/staging/prod 中使用它,因此我们的开发人员非常自主地进行本地测试,无需其他更改,将其带到 CICD 并因此投入生产。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则