用例:与docker compose一起运行的haproxy容器。我想让容器发现哪些主机可用,以便重新创建haproxy配置并重新加载它。
我知道会有一个或多个名为server1和server2的容器可用。从haproxy容器内部,我可以查询dns的server1并接收多个IP地址。这是知道新的server1硬币容器何时可用或死亡的唯一方法吗?我知道我可以在没有映射到docker主机套接字的容器内运行的python中使用docker api,但是我不确定在swarm上运行时是否可以使用。
完美的解决方案是让我注册一个事件处理程序的api或命令,当新容器加入网络时调用该事件处理程序。
最佳答案
您可以使用注册器(https://github.com/gliderlabs/registrator),领事和领事模板来解决。
领事是服务发现
Consul-Template监视Consul并更新HA Proxy配置并重新加载它。
Registrator侦听Docker Engine并更新Consul(如果有任何容器处于启动或关闭状态)。
请看图片:
对于完整的教程,您可以引用我的博客(https://sonnguyen.ws/microservices-with-docker-swarm-and-consul/)了解如何实现它。
关于docker - 容器如何枚举网络上可用的主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004397/