首页 > 解决方案 > docker rabbitmq 如何使用 docker 文件公开端口和重用容器

问题描述

嗨,我发现如何创建一个运行 rabbitmq 容器的 docker 文件非常令人困惑,我可以在其中公开端口,以便我可以通过 localhost 和端口号导航到管理控制台。

我看到有人提供了这个 dockerfile 示例,但不确定如何运行它?

version: "3"
services:
 rabbitmq:
    image: "rabbitmq:3-management"
    ports:
      - "5672:5672"
      - "15672:15672"
     volumes:
      - "rabbitmq_data:/data"
     volumes:
      rabbitmq_data:

我让兔子在本地工作得很好,但每个人都告诉我 docker 是未来,以这个速度我不明白。

以上看起来像是运行rabbitmq容器的有效方法吗?我在哪里可以找到一个完全可以理解的例子?

  1. 我需要一个 docker 文件还是我误解了它?
  2. 如何指定端口?在上面的例子中,第一个数字 5672:5672 是什么,最后一个是什么?
  3. 我怎么能确定当我再次运行容器时,说在机器重启后我得到了同一个容器?

非常感谢

安德鲁

标签: dockerrabbitmq

解决方案


码头工人组成

您发布的不是Dockerfile。它是一个docker-compose文件。

要运行它,您需要

1) 创建一个名为docker-compose.yml的文件并在其中粘贴以下内容:

version: "3"
services:
 rabbitmq:
  image: "rabbitmq:3-management"
  ports:
    - "5672:5672"
    - "15672:15672"
  volumes:
    - "rabbitmq_data:/data"
volumes:
  rabbitmq_data:

2) 下载 docker-compose ( https://docs.docker.com/compose/install/ )

3)(重新)启动Docker。

4)在控制台运行:

cd <location of docker-compose.yml>
docker-compose up

我需要一个 docker 文件还是我误解了它?

你有一个 docker-compose 文件。这rabbitmq:3-management是使用 RabbitMQ Dockerfile 构建的 Docker 映像(您不需要。该映像将在您第一次运行时下载docker-compose up

如何指定端口?在上面的例子中,第一个数字 5672:5672 是什么,最后一个是什么?

"5672:5672"指定队列的端口。

"15672:15672"指定管理插件的端口。

左侧的数字是您可以从容器外部访问的端口。因此,如果您想使用不同的端口,请更改左侧的端口。正确的是内部定义的。

http:\\localhost:15672这意味着您可以在 at (或更一般地)之后访问管理插件http:\\<host-ip>:<port exposed linked to 15672>

您可以在Docker Hub上查看有关 RabbitMQ 映像的更多信息。

我怎么能确定当我重新运行容器时,说在机器重启后我得到了同一个容器?

我假设您想要相同的容器,因为您想要持久化数据。您可以使用docker-compose stop重新启动计算机,然后运行docker-compose start​​. 然后使用相同的容器。但是,如果容器被删除,您将丢失其中的数据。

这就是您使用Volumes的原因。在您的容器中收集的数据也会存储在您的主机中。因此,如果您删除容器并启动一个容器,数据仍然存在,因为它存储在主机中。


推荐阅读