【问题标题】:How to let Docker containers broadcast their IP addresses or hostnames to each other?如何让 Docker 容器互相广播它们的 IP 地址或主机名?
【发布时间】:2014-12-03 03:19:54
【问题描述】:

Docker 一直让我思考的一个方面是,让共同构成应用程序架构的不同容器相互关联 IP 和主机名的适当方法是什么。

所以让我们假设我们有一个类似这样的 Docker 部署拓扑:

每个橙色节点代表一个容器。所有容器可能都在同一台物理机器上运行,或者每个容器可能都有其专用的 EC2 实例。也有可能所有作者节点都驻留在一个 EC2 实例上,而所有发布者节点都驻留在自己的 EC2 实例上。

但是为了这个问题,我们可以假设它们都运行在开发者的本地机器上,或者每个都运行在自己的专用 EC2 实例上。

如何让所有实例在它们来来去去时获取所有其他实例的 IP 地址和/或主机名?

所以当作者 2 去世时,作者 1、作者 N 以及出版商 1,2 和 N 应该被通知此事件。同样,当一个新的发布者加入拓扑时,所有其他实例都应该被通知它的 IP 地址和/或主机名。

我正在为我的本地开发环境以及适合生产 AWS 部署的解决方案寻找解决方案。理想情况下,相同的解决方案应该同时在本地和 AWS 上运行。

【问题讨论】:

  • 您可以使用自己的DNS serverfault.com/questions/574095
  • @GünterZöchbauer 您能否提供一个完整的解决方案而不是指向其他链接?我查看了该链接,它与我的问题几乎没有关系或完整答案。
  • 这就是为什么我只发表评论而不是回答的原因。我不使用 AWS,也没有测试过这些。

标签: amazon-ec2 docker


【解决方案1】:

ETCd 正是您想要的。 AWS 不支持其本地网络上的任何类型的多播或广播流量。作为 CoreOS 一部分的 Etcd 为您提供了一个服务发现框架。它允许您发现节点以及注册节点。

https://github.com/coreos/etcd

【讨论】:

  • etcd 是一个配置管理组件,它使 docker 容器能够相互发现。其他选项是 consul (consul.io) 和 zookeeper。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2014-05-21
  • 2022-06-29
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多