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,启用了管理界面和常用插件。