如何在docker swarm中为容器副本分配不同的端口

时间:2018-02-21 12:37:08

标签: docker docker-compose dockerfile docker-swarm docker-machine

我们正在使用docker swarm模式的docker容器部署风暴管理器和副本3.现在我们想通过浏览器访问管理员登录。

我们已经公开了可以访问风暴UI的端口8080。这工作正常。现在,storm还在端口8000上公开了他们的日志文件。由于我们只有一个nimbus和3个管理员,通过端口8000访问nimbus日志非常简单。

我们在使用docker swarm服务部署的主管面临的问题。而在docker swarm服务中,我们无法为不同的容器传递不同的端口。

目前,docker swarm服务在所有容器上公开相同的端口。 我们真正想要的是

port    container
8011    supervisor1:8000
8012    supervisor2:8000
8013    supervisor3:8000

我们怎样才能做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:3)

理想情况下,Swarm服务中的任务不应该是唯一的,也不应包含彼此唯一的数据。我知道有一些方法可以解决这个问题,但它总是感觉不理想或者说是黑客,特别是当你处理需要与任务一对一匹配的持久性数据时。

我建议您将三个副本分成三个单独的服务。我知道这听起来更像是工作,但在单个堆栈文件中,它可以让您灵活地处理它们上的各个端口和卷,因为它们是唯一的容器。