docker - 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容器的有效方法吗?我在哪里可以找到一个完全可以理解的例子?
- 我需要一个 docker 文件还是我误解了它?
- 如何指定端口?在上面的例子中,第一个数字 5672:5672 是什么,最后一个是什么?
- 我怎么能确定当我再次运行容器时,说在机器重启后我得到了同一个容器?
非常感谢
安德鲁
解决方案
码头工人组成
您发布的不是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的原因。在您的容器中收集的数据也会存储在您的主机中。因此,如果您删除容器并启动一个新容器,数据仍然存在,因为它存储在主机中。
推荐阅读
- java - 那时,模拟类方法没有使用 Mockito 返回预期值
- node.js - 使用 axios 发布请求和未定义的错误得到错误 400
- c - 如何测量 Linux 内核模块中函数的执行时间?
- reactjs - React TSX - 在 React 元素道具中使用 Lambda 表达式
- reactjs - React:如何呈现按类别分组的项目列表(使用 .map)
- javascript - 如何在 Fullcalendar 中显示禁用日期的事件?
- aws-lambda - SAM 应用程序运行时
- android - 随手机旋转测量节点
- android - 运行“adb shell setprop”后的文件位置
- algorithm - 是否有用于将线列表更改为点列表的 log(n) 算法?