Ubuntu 22.04(WSL2)上使用Docker安装RabbitMQ
本教程将指导您在Ubuntu 22.04(运行于WSL2)上使用Docker安装和配置RabbitMQ,包括设置持久化存储、启用管理界面以及安装延迟消息交换和MQTT等插件。
前提条件
- Ubuntu 22.04 已安装在 WSL2 上。
- Docker 已安装并在 WSL2 上运行。
- 熟悉基本的 Docker 命令和 Linux 文件权限。
步骤 1:创建挂载目录
为了确保 RabbitMQ 的数据、配置文件和日志在 Docker 容器外持久化,需要创建专用目录并设置适当的权限。
mkdir -p /home/rabbitmq/data /home/rabbitmq/conf /home/rabbitmq/log
说明:在 /home/rabbitmq 下创建三个目录(data、conf、log),分别用于存储 RabbitMQ 的数据、配置和日志。-p 参数确保父目录不存在时会自动创建。
chmod 777 -R /home/rabbitmq/*
说明:递归地将 /home/rabbitmq 下的所有文件和目录权限设置为 777(所有用户均可读、写、执行)。这确保 RabbitMQ 可以访问这些目录,但 777 权限较为宽松,在生产环境中应根据需要调整以提高安全性。
步骤 2:运行 RabbitMQ Docker 容器
使用包含管理插件的 RabbitMQ 镜像启动容器,映射端口和挂载卷。
docker run -d --hostname rabbitmq --name rabbitmq --privileged=true -p 15672:15672 -p 5672:5672 -v /home/rabbitmq/data:/var/lib/rabbitmq -v /home/rabbitmq/conf:/etc/rabbitmq -v /home/rabbitmq/log:/var/log/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=your_password rabbitmq:3.13-management
说明:
-d:在后台(分离模式)运行容器。--hostname rabbitmq:设置容器主机名为rabbitmq。--name rabbitmq:为容器命名rabbitmq,便于后续操作。--privileged=true:授予容器提升的权限(便于 RabbitMQ 的文件操作,但在生产环境中需谨慎使用)。-p 15672:15672:将容器的15672端口(管理界面)映射到主机的15672端口。-p 5672:5672:将容器的5672端口(AMQP 协议)映射到主机的5672端口。-v /home/rabbitmq/data:/var/lib/rabbitmq:将主机的/home/rabbitmq/data挂载到容器的/var/lib/rabbitmq,用于持久化数据。-v /home/rabbitmq/conf:/etc/rabbitmq:将主机的/home/rabbitmq/conf挂载到容器的/etc/rabbitmq,用于存储配置文件。-v /home/rabbitmq/log:/var/log/rabbitmq:将主机的/home/rabbitmq/log挂载到容器的/var/log/rabbitmq,用于存储日志。-e RABBITMQ_DEFAULT_USER=admin:设置默认用户名为admin。-e RABBITMQ_DEFAULT_PASS=your_password:设置默认用户密码为your_password(请替换为安全密码)。rabbitmq:3.13-management:使用包含管理插件的 RabbitMQ 3.13 版本镜像。
步骤 3:启用 RabbitMQ 管理界面
启用 RabbitMQ 的 Web 管理界面以便通过浏览器访问。
docker exec -it rabbitmq /bin/bash
说明:以交互模式(-it)进入名为 rabbitmq 的容器,启动一个 Bash 会话,允许在容器内执行命令。可以使用容器名称或容器 ID。
rabbitmq-plugins enable rabbitmq_management
说明:启用 rabbitmq_management 插件,激活 RabbitMQ 的 Web 管理界面。完成后,可通过浏览器访问 http://localhost:15672,使用用户名 admin 和密码 your_password 登录。
步骤 4:安装 RabbitMQ 插件
安装额外的插件,例如延迟消息交换插件和 MQTT 插件。
4.1 检查 RabbitMQ 版本
docker exec -it rabbitmq /bin/bash
说明:以交互模式进入名为 rabbitmq 的容器,启动一个 Bash 会话,允许在容器内执行命令。
rabbitmqctl version
说明:运行 rabbitmqctl version 命令,显示当前 RabbitMQ 的版本(例如 3.13.0),以确保下载的插件与版本兼容。
4.2 下载插件
访问 RabbitMQ 官方插件页面下载所需插件:
- 插件下载页面:
https://www.rabbitmq.com/community-plugins.html - 例如,下载
rabbitmq_delayed_message_exchange-3.13.0.ez插件,确保版本与 RabbitMQ 匹配。
4.3 将插件复制到容器
先将插件复制到wsl2的Ubuntu系统中,eg: /home/rabbitmq/plugis/目录下
docker cp /home/rabbitmq/plugis/rabbitmq_delayed_message_exchange-3.13.0.ez rabbitmq:/plugins
说明:将主机上的插件文件(例如 /home/rabbitmq/plugis/rabbitmq_delayed_message_exchange-3.13.0.ez)复制到容器 rabbitmq 的 /plugins 目录。需先通过 SSH 工具(如 SCP)将插件文件上传到 Linux 主机。
4.4 启用插件
docker exec -it rabbitmq /bin/bash
说明:以交互模式进入名为 rabbitmq 的容器,启动一个 Bash 会话,允许在容器内执行后续命令。
cd /plugins
说明:切换到容器的 /plugins 目录,插件文件已被复制到此目录。
ls
说明:列出 /plugins 目录中的文件,确认插件文件(如 rabbitmq_delayed_message_exchange-3.13.0.ez)已成功复制。
rabbitmq-plugins enable rabbitmq_delayed_message_exchange rabbitmq_mqtt rabbitmq_web_mqtt
说明:启用指定的插件(rabbitmq_delayed_message_exchange、rabbitmq_mqtt、rabbitmq_web_mqtt)。只需提供插件前缀,无需包含版本号或 .ez 后缀,否则会报错。插件功能如下:
rabbitmq_delayed_message_exchange:支持延迟消息。rabbitmq_mqtt:支持 MQTT 协议。rabbitmq_web_mqtt:支持 Web MQTT。
exit
说明:退出容器的 Bash 会话,返回到主机终端。
步骤 5:重启容器
docker restart rabbitmq
说明:重启名为 rabbitmq 的容器,使新启用的插件配置生效。
验证安装
- 打开浏览器,访问
http://localhost:15672。 - 使用用户名
admin和密码your_password登录。 - 验证管理界面是否正常显示,并检查是否可以创建队列、交换机等。
- 如果启用了延迟消息或 MQTT 插件,可通过相应的客户端测试功能。
注意事项
- 生产环境中,建议使用更安全的密码,并调整目录权限(避免
777)。 - 确保插件版本与 RabbitMQ 版本兼容,避免运行时错误。
- 如果 WSL2 端口映射有问题,可检查 Docker 和 WSL2 的网络配置。
通过以上步骤,您已在 Ubuntu 22.04(WSL2)上成功使用 Docker 安装并配置了 RabbitMQ,启用了管理界面和常用插件。
