docker集装箱通信

我正在努力实现以下目标:

  • 有多个docker容器执行一些时期的任务
  • 有一个组件在本地主机上运行,​​除了其他任务pipe理(启动/停止)的容器
  • 有时在容器中运行的服务需要发布结果。 因此它们使用ZMQ绑定到一个暴露的端口并发送结果。
  • 运行在本地主机上的组件订阅特定的端口并在其上侦听。

问题是每个容器都需要localhostnetworking上的特定/不同的端口来绑定和发布结果。 这意味着我需要听所有的集装箱港口。

是否有可能听一个单一的端口,所有的容器在那里发布他们的工作?

如果不是,那么选项是什么?

谢谢

尝试在容器中使用ZMQ,容器将工作发布到zmq_container,并从本地主机,您也可以订阅zmq_contaniner的频道(使用一个端口)

选项:

  1. 将结果发布到中央共享数据库( 如mysql或mongodb容器 ),并从中读取
  2. 将结果发布到所有中央共享消息队列( 如kafka容器 )并从中读取。 ( 对于可靠和实时的消息交换,kafka将是更强大的解决scheme