为什么在docker run命令行中可以有更多的time-p选项

为什么在docker run命令行中可以有更多的time-p选项,docker,rabbitmq,docker-run,Docker,Rabbitmq,Docker Run,我看到docker运行命令行,如下所示: docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management 此命令启动映像rabbitmq:3-management 使用选项--it,它以交互模式运行,因此我们可以在容器仍在运行时在容器内执行命令。 通过选项--name,它允许我将rabbitmq名称分配给容器 我不明白的是-p选项,为什么是两次 我知道访问进程的唯一方法是从进程内部访问。

我看到docker运行命令行,如下所示:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
此命令启动映像rabbitmq:3-management 使用选项--it,它以交互模式运行,因此我们可以在容器仍在运行时在容器内执行命令。 通过选项--name,它允许我将rabbitmq名称分配给容器

我不明白的是-p选项,为什么是两次

我知道访问进程的唯一方法是从进程内部访问。要允许外部连接到容器,必须打开(发布)特定端口

所以它的工作原理是:
docker run-p8080:80[image\u name]
。 因此,该命令i将容器中的TCP端口80映射到Docker主机上的端口8080

所以我的问题是为什么会这样

-p 5672:5672 -p 15672:15672 rabbitmq:3-management
为什么我有两次-p? 为什么我有相同的端口
5672:5672和15672:15672


谢谢

默认情况下,RabbitMQ接受端口
5672
上的TCP客户端连接(使用者、发布者)。因此
-p 5672:5672
表示“将主机上的端口
5672
映射到此容器的端口
5672

RabbitMQ管理UI是一个HTTP服务器,默认情况下侦听端口
15672
。因此
-p 15672:15672
意味着“将主机上的端口
15672
映射到该容器的端口
15672
”,以便您可以在类似
localhost:15672
的web浏览器中访问管理UI

在这两种情况下,左侧的数字都是主机端口号。如果
5672
是主机上已使用的端口,则可以将主机上的其他端口映射到容器,如
-p 95672:5672

此问题是否有帮助:。不过,我最好用“发布”这个词,而不是“公开”。