Docker Engine Swarm:从“外部”群访问网络

时间:2016-12-02 17:25:09

标签: docker-swarm

我正在使用Docker(1.12)Engine Swarm,其中两个节点在群集“bundle”中运行:

  • redis的
  • 我的node.js应用程序

他们都通过自己的网络连接:docker network create -d overlay antispam

我使用redis作为内存数据库,我有另一个node.js应用程序用于将新数据推送到此数据库 - 通常 - 间隔一小时。数据推送器是一个短命的应用程序,它接受一些文本文件,解析它们并将其内容推送到redis。但是,Docker swarm中有no "schedule short-running containers" feature。所以我需要将我的应用程序作为“普通”docker容器运行,因此需要从swarm的“外部”访问redis。

明显的解决方案是:

  • ...让redis端口公开,但这也是一个丑陋的解决方案。
  • ...将短暂运行的应用程序转换为长时间运行的应用程序,通常只是睡觉并且偶尔会醒来。叫我老派,但我不喜欢浪费资源只是睡觉过程。
  • ...使用RabbitMQ或MySQL(在我的“非docker”环境中作为服务提供)作为数据中继,在那里写入我的数据并让群中的应用程序再次读出它。这将增加另一个工作步骤。

是否还有其他选项可以从外部访问这两个容器的网络?

0 个答案:

没有答案