docker rabbitmq 如何使用 docker 文件公开端口和重用容器

标签 docker rabbitmq

嗨,我发现如何创建一个运行 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 是 future ,按照这个速度我不明白。

以上看起来像运行rabbitmq容器的有效方法吗?我在哪里可以找到一个完全可以理解的例子?
  • 我需要一个 docker 文件还是我误解了它?
  • 如何指定端口?在上面的例子中,第一个数字 5672:5672 是什么,最后一个数字是什么?
  • 我如何确定当我再次运行容器时,说在机器重启后我得到了相同的容器?

  • 非常感谢

    安德鲁

    最佳答案

    Docker-compose

    您发布的内容不是 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 之后访问管理插件。 (或更一般地说 http:\\<host-ip>:<port exposed linked to 15672> )。

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

    我如何确定当我重新运行容器时,比如在机器重新启动后我得到了相同的容器?

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

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

    关于docker rabbitmq 如何使用 docker 文件公开端口和重用容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578794/

    相关文章:

    bash - Docker 网络不适用于 bash 入口点

    c# - 确保事件最终发布到消息队列系统的最佳方式

    rabbitmq - 如何在 DAG 中使用 Apache Apex Malhar RabbitMQ 运算符

    java - 如何在 Web 上下文中设置 RabbitMQ RPC

    python - PyCharm 在 Docker 中添加远程 Python 解释器

    mongodb - 我想在 Docker 容器上执行 mongoimport

    c# - rabbitmq 消费者成为生产者

    java - RabbitMQ 使用 Spring 直接回复的问题

    docker - 无法在Docker中运行动荡

    amazon-web-services - Docker Swarm关于AWS Cloudformation的说明