为什么我们可以在 docker 运行 命令行中有更多的时间 -p 选项

Why can we have more time -p options in docker run command line

我看到一个 docker 运行 命令行如下:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

此命令启动映像 rabbitmq:3-管理 使用 --it 选项,它 运行s 处于交互模式,因此我们可以在容器仍然 运行ning 时在容器内执行命令。 使用选项 --name,它允许我将 rabbitmq 名称分配给我的容器。

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

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

所以它的工作方式如下:docker run -p 8080:80 [image_name]。 所以这个命令我将容器中的 TCP 端口 80 映射到 Docker 主机上的端口 8080。

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

-p 5672:5672 -p 15672:15672 rabbitmq:3-management

为什么我有两次-p? 为什么我有相同的端口 5672:5672 and 15672:15672 ?

谢谢

RabbitMQ 默认在端口 5672 上接受 TCP 客户端连接(消费者、发布者)。所以 -p 5672:5672 表示“将主机上的端口 5672 映射到此容器的端口 5672”。

RabbitMQ 管理 UI 是一个默认监听端口 15672 的 HTTP 服务器。所以 -p 15672:15672 的意思是“将主机上的端口 15672 映射到这个容器的端口 15672” 这样你就可以像 [=18= 这样在网络浏览器中访问管理 UI ].

在这两种情况下,左边的数字是主机端口号。如果 5672 是您已经在主机上使用的端口,您可以将主机上的不同端口映射到容器,如 -p 95672:5672.