当前位置: 首页 > 面试题库 >

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

闻人昕
2023-03-14
问题内容

我们正在使用副本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

我们如何实现这一目标。

提前致谢。


问题答案:

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

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



 类似资料:
  • 我的目标是让我的Linux容器与主机和其他设备生活在同一个局域网上。因为我需要经常使用nmap来扫描局域网上设备的mac地址。不幸的是,nmap扫描仅在这些机器都位于同一子网上时才有效。 我尝试了几种方法来实现它,但都失败了。虽然有很多关于如何做到这一点的说明,但似乎都是针对Docker for Linux的。 例如,stackoverflow中的一个非常详细的说明:CentOS上的Docker带

  • 问题内容: 这些天,我读了很多关于如何设置和运行Docker堆栈的信息。但是我一直想念的一件事是如何设置特定容器通过域名响应访问权限,而不仅仅是使用docker dns的容器名称。 我的意思是说我有一个可以从外部访问的微服务,例如:users.mycompany.com,它将进入处理用户api的微服务容器 然后,当我尝试访问customer-list.mycompany.com时,它将进入处理客户

  • 问题内容: 我不确定在这里是否误解了一些东西,但是似乎只能通过从映像创建新容器来设置端口映射。是否可以将端口映射分配给现有Docker容器? 问题答案: 您可以通过直接在以下位置编辑文件 来更改端口映射 您可以通过命令确定[hash_of_the_container] ,“ Id”字段的值为哈希。 因此,您无需使用这种方法来创建图像。您也可以在此处更改重新启动标志。 PS:您可以访问 https:

  • 问题内容: 我想为容器分配一个端口,以便在每次重新启动容器后都获得相同的端口。 示例:我有一个容器,其中有一个Apache。Apache在容器内的端口80上运行。现在,在启动容器后,docker将一个主机端口分配给该容器端口,例如:49154->80。但是该主机端口在重新启动后会更改,具体取决于正在运行的容器的数量。我试图在容器的config.json文件中指定端口,但该端口被覆盖。 是否可以手动

  • 我现在使用和注释在Spring Boot中使用多线程。我有服务A(快)和服务B(慢)。 我如何为他们设置不同的游泳池?因此,当有大量对B的调用时,应用程序仍然可以在与B不同的池中处理服务A。

  • 目标是运行两个容器的。一个容器应该映射到主机上的8080端口,另一个映射到8081端口。这是docker compose的