首页 > 解决方案 > 为什么我们可以在 docker run 命令行中有更多 time -p 选项

问题描述

我已经看到一个 docker run 命令行如下:

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

此命令启动镜像 rabbitmq:3-management 使用选项 --it,它以交互模式运行,因此我们可以在容器仍在运行时执行容器内的命令。使用选项 --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

谢谢

标签: dockerrabbitmqdocker-run

解决方案


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

RabbitMQ 管理 UI 是一个 HTTP 服务器,15672默认监听端口。所以-p 15672:15672意味着“15672将主机上的端口映射15672到此容器的端口”,以便您可以在 Web 浏览器中访问管理 UI,例如localhost:15672.

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


推荐阅读