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

0

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

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

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

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

profile picture
EXPERTE
gefragt vor 5 Monaten26 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen