我正在使用以下命令运行RabbitMQ容器:
docker run --name sl-rabbitmq-mgmt-dev --publish=15672:15672/tcp --publish=5672:5672/tcp --hostname=rabbitmq --detach rabbitmq:3-management
端口15672用于管理控制台,主要的通信端口是5672
我有多个.NET Core docker映像,它们侦听/订阅端口5672,以侦听队列的传入消息,并将消息推送到队列。
.dll可能/将有多个实例(“工作者”)运行。运行一个实例可以进行本地开发,但多个实例将在PROD中运行。
当我尝试运行.dll(即Process1.dll)的docker映像时
docker run --rm --publish=5672:5672/tcp --detach process1:latest
它指示容器已在0.0.0.0:/5672上绑定到该端口
我假设将需要一个docker-compose文件来完成我打算进行的工作。
如何在同一端口上运行这些多个容器?</ p>
答案 0 :(得分:0)
不可能在主机的同一端口上运行多个容器。 或者您需要更改解决方案。例如更改端口。
答案 1 :(得分:0)
RabbitMQ工作流程是,代理需要侦听端口5672。生产者和消费者需要与代理上的该端口建立出站连接,但他们本身并不需要接受入站连接。
这意味着您可以从工作容器中删除--publish
选项。他们仍然可以与RabbitMQ建立出站连接,并且您不会发生端口冲突。