rabbitmq使用docker容器挂载宿主机配置文件时无法访问控制台

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: rabbitmq使用docker容器挂载宿主机配置文件时无法访问控制台

一、场景

本文使用的环境为:

  • linux
  • docker
  • rabbitmq镜像

二、正常情况

正常情况下,我们启动rabbitmq的docker容器,只需要输入以下命令即可,

docker run \
-d \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
--network my-bridge \
--ip 172.18.0.6 \
--restart=always \
--name rabbitmq \
docker.io/rabbitmq

启动后可以正常访问控制台,如图

正常访问控制台.png

三、出现问题

当我想把rabbitmq的运行日志输出到文件时,使用docker挂载一个宿主机的配置文件,在此配置文件中对日志文件进行配置如下所示

  • 新建保存配置文件的目录并进入该目录

    cd /usr/local/rabbitmq/conf
    
  • 编辑配置文件vim rabbitmq.conf,该配置文件名称固定

    # 日志级别
    log.file.level = info
    # 日志文件位置
    log.dir = /var/log/rabbitmq
    # 日志文件名称
    log.file = rabbit.log
    # 每天0点滚动日志文件
    log.file.rotation.date = $D0
    # 日志文件的最大存档数为7
    log.file.rotation.count = 7
    # 控制台api访问日志
    management.http_log_dir = /var/log/rabbitmq/access
    
  • 编辑容器的启动命令,在之前的命令上添加两个挂载配置,分别挂载配置文件日志文件的路径

    docker run \
    -d \
    -p 5672:5672 \
    -p 15672:15672 \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=123456 \
    --network my-bridge \
    --ip 172.18.0.6 \
    --restart=always \
    --name rabbitmq \
    -v /usr/local/rabbitmq/conf:/etc/rabbitmq \
    -v /usr/local/rabbitmq/logs:/var/log/rabbitmq \
    docker.io/rabbitmq
    
  • 将正常运行的docker容器stoprm掉后,再次执行启动命令,此时已发现无法打开控制台

    无法访问网页.png

四、排查

  • 首先检查docker容器是否正常启动,发现不是这个问题

    容器正常启动.png

  • 查看容器的日志,虽然没有报错信息,但是最后一行日志似乎给了我们线索,启动时一个插件都没有生效呢?

    容器启动日志.png

  • 查看官方文档

    进入dockerhub,搜索rabbitmq,查看官方给的overview里是否给了答案。很幸运,在overview里我们发现了关于插件的介绍。

    启动插件的官文.png

您还可以在/etc/rabbitmq/enabled_plugins处挂载一个文件,其内容是以句点结尾的原子的erlang列表。

例如:文件名为enabled_plugins

[rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].

注意不要漏掉最后的标点符号.

五、解决

看到这里,应该就是此问题的解决方案了。

然后我们发现enabled_plugins文件和配置文件是在同一个目录下的,可能正是因为我们只挂载了配置文件rabbitmq.conf,却忽略了该文件而导致了问题。

  • 在宿主机的配置文件rabbitmq.conf相同目录下新建文件enabled_plugins

    [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
    
  • 再检查容器的启动命令,宿主机/usr/local/rabbitmq/conf目录下的rabbitmq.confrabbitmq.conf都已经挂载到容器的/etc/rabbitmq目录下了

    docker run \
    -d \
    -p 5672:5672 \
    -p 15672:15672 \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=123456 \
    --network my-bridge \
    --ip 172.18.0.6 \
    --restart=always \
    --name rabbitmq \
    -v /usr/local/rabbitmq/conf:/etc/rabbitmq \
    -v /usr/local/rabbitmq/logs:/var/log/rabbitmq \
    docker.io/rabbitmq
    
  • 启动容器,直接打开控制台检查效果

  • 问题解决

相关实践学习
5分钟轻松打造应对流量洪峰的稳定商城交易系统
本实验通过SAE极速部署一个微服务电商商城,同时结合RocketMQ异步解耦、削峰填谷的能力,带大家体验面对流量洪峰仍旧稳定可靠的商城交易系统!
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
25天前
|
开发者 Docker 容器
获取Docker基础使用方法:让容器化变得轻松。
对于Docker的初学者来说,了解这些基础知识点就足够了。实践是最好的老师,越是动手操作,对Docker的理解会越深。祝阅读这篇文章的开发者们一切顺利,愿你在Docker的海洋中航行顺利!
78 17
|
1月前
|
关系型数据库 MySQL Docker
|
2月前
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
129 27
|
11天前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
|
3月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
194 30
|
3月前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
172 16
|
3月前
|
存储 虚拟化 Docker
|
3月前
|
存储 开发工具 开发者
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
118 12
|
3月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
4月前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
625 15