当前位置: 首页 > 知识库问答 >
问题:

如何在Docker Compose中为复制的容器配置端口映射?

武骁
2023-03-14

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

  publisher_app:
    ports:
      - "8080-8081:8080"
    environment:
      server.port: 8080
    deploy:
      mode: replicated
      replicas: 2

创建了两个容器,但据我所知,两个端口都被分配给第一个,而第二个会产生以下错误:端口不可用:侦听tcp 0.0.0.0:8081:bind:地址已在使用

这里是docker ps-a的输出:

6c7067b4ebee   spring-boot-rest-kafka_publisher_app   "java -jar /app.jar"     33 seconds ago   Up 28 seconds              0.0.0.0:8080->8080/tcp, 0.0.0.0:8081->8080/tcp   spring-boot-rest-kafka_publisher_app_2
70828ba8f370   spring-boot-rest-kafka_publisher_app   "java -jar /app.jar"     33 seconds ago   Created                                                                     spring-boot-rest-kafka_publisher_app_1

Docker引擎版本:20.10.11

Docker compose版本:2.2.1

如何处理这个案子?非常感谢你的帮助。

这里是源代码:https://github.com/aleksei17/springboot-rest-kafka-mysql/blob/master/docker-compose.yml


共有1个答案

党宇定
2023-03-14

在本地进行了尝试,但同样失败,v2和v2均已禁用。

看起来像是作曲的问题

在arch上试用时:amd64基于fedora的linux发行版,安装了package manager docker,并手动安装docker compose1.29.2(使用linux的官方指南)有效:

撰写文件:

version : "3"
services:
  web:
    image: "nginx:latest"
    ports:
      - "8000-8020:80"

Docker命令:

docker-compose up --scale web=5
CONTAINER ID   IMAGE                                     COMMAND                  CREATED          STATUS                    PORTS                                   NAMES
b304d397b2cd   nginx:latest                              "/docker-entrypoint.…"   14 seconds ago   Up 7 seconds              0.0.0.0:8004->80/tcp, :::8004->80/tcp   testdir_web_4
a8c6f177a6e6   nginx:latest                              "/docker-entrypoint.…"   14 seconds ago   Up 7 seconds              0.0.0.0:8003->80/tcp, :::8003->80/tcp   testdir_web_3
b1abe53e7d7d   nginx:latest                              "/docker-entrypoint.…"   14 seconds ago   Up 8 seconds              0.0.0.0:8002->80/tcp, :::8002->80/tcp   testdir_web_2
ead91e9df671   nginx:latest                              "/docker-entrypoint.…"   14 seconds ago   Up 9 seconds              0.0.0.0:8001->80/tcp, :::8001->80/tcp   testdir_web_5
65ffd6a87715   nginx:latest                              "/docker-entrypoint.…"   24 seconds ago   Up 21 seconds             0.0.0.0:8000->80/tcp, :::8000->80/tcp   testdir_web_1
 类似资料:
  • 问题内容: 我不确定在这里是否误解了一些东西,但是似乎只能通过从映像创建新容器来设置端口映射。是否可以将端口映射分配给现有Docker容器? 问题答案: 您可以通过直接在以下位置编辑文件 来更改端口映射 您可以通过命令确定[hash_of_the_container] ,“ Id”字段的值为哈希。 因此,您无需使用这种方法来创建图像。您也可以在此处更改重新启动标志。 PS:您可以访问 https:

  • 我不确定我是否误解了这里的某些东西,但似乎只有通过从映像创建一个新容器来设置端口映射才是可能的。是否有一种方法将一个端口映射分配给一个现有的Docker容器?

  • 问题内容: 我们正在使用副本3的docker swarm模式在docker容器中部署风暴超级用户。现在,我们想通过浏览器访问超级用户登录。 我们公开了可以访问Storm UI的端口8080。一切正常。现在,storm也将其日志文件公开在端口8000上。由于我们只有一个nimbus和3个超级用户,因此通过端口8000访问nimbus日志非常容易。 我们在使用docker swarm服务部署的主管上遇

  • 我尝试使用openshift路由配置istio入口。据我所知,请求路径如下:

  • 我想创建一个 angular.io 应用程序,但其余的API应从不同的服务器端付。 来自localhost的角度内容:4200,来自node express服务器的数据在localhost上独立启动:3000。但是当我注入并使用‘http’时,如何配置要使用的端口?

  • 本文向大家介绍Docker 给运行中的容器设置端口映射的方法,包括了Docker 给运行中的容器设置端口映射的方法的使用技巧和注意事项,需要的朋友参考一下 一、概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器。 二、实现 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。 1. 随机映射 使用 -P 参数时,Docker 会