一尘不染

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

docker

我们正在使用副本3的docker swarm模式在docker容器中部署风暴超级用户。现在,我们想通过浏览器访问超级用户登录。

我们公开了可以访问Storm
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

我们如何实现这一目标。

提前致谢。


阅读 485

收藏
2020-06-17

共1个答案

一尘不染

理想情况下,Swarm服务中的任务不应唯一或包含彼此唯一的数据。我知道有几种方法可以解决此问题,但它总是让人感到不理想或不可靠,尤其是在处理需要一对一匹配任务的持久数据量时。

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

2020-06-17