Docker 部署 RocketMQ 5.x 完整教程(含新手踩坑+命令深度解析)
·
前置准备(必看)
1. 环境要求
- Windows:安装 Docker Desktop(需开启 Hyper-V,新手直接下一步安装即可)
- Linux:安装 Docker Engine(后续可补充 Linux 安装命令,新手先聚焦部署)
- 端口开放:9876(NameServer)、10911(Broker)、8080(Dashboard),避免防火墙拦截
- 内存建议:≥ 2GB,避免容器因内存不足崩溃
2. 核心组件说明(新手必懂)
RocketMQ 核心由 3 个组件组成,缺一不可,Docker 部署时需保证三者互通:
- NameServer:注册中心,管理 Broker 地址信息,相当于“导航仪”
- Broker:消息存储与转发核心,相当于“消息仓库”,负责接收、存储、转发消息
- Dashboard:可视化控制台,替代繁琐的 mqadmin 命令行,新手操作更友好
二、Docker 网络创建(关键一步,避坑核心)
RocketMQ 的 NameServer、Broker、Dashboard 是三个独立容器,需要在同一网络下才能互通,避免因容器 IP 变动导致连接失败(比 --link 更稳定,新手优先用这种方式)。
执行命令
docker network create rocketmq
命令深度解析(新手必看)
- docker network create:Docker 创建自定义桥接网络的核心命令,桥接网络可实现容器间内网互通
- rocketmq:自定义网络名称,后续所有 RocketMQ 相关容器都加入这个网络,方便管理
- 作用:让 NameServer、Broker、Dashboard 处于同一“内网”,无需暴露多余端口,避免网络不通的坑
三、部署 NameServer(注册中心,先启动)
NameServer 是 RocketMQ 的“导航中心”,必须先启动,否则 Broker 无法注册,客户端也无法连接。
1. 启动命令(复制直接执行)
docker run -d \
--name rmqnamesrv \
--network rocketmq \
--restart always \
-p 9876:9876 \
-e "JAVA_OPT_EXT=-Xms256m -Xmx256m" \
apacherocketmq/rocketmq:5.3.0 \
sh mqnamesrv
2. 逐行解析(新手吃透每一个参数)
| 参数 | 含义 | 新手必懂作用 |
|---|---|---|
| -d | 后台运行容器 | 容器启动后不占用终端,关闭终端也不会停止 |
| --name rmqnamesrv | 给容器命名 | 后续查看日志、启动停止容器,直接用这个名字,不用记复杂的容器ID |
| --network rocketmq | 加入自定义的 rocketmq 网络 | 和后续的 Broker、Dashboard 互通,避免网络隔离 |
| --restart always | 开机自启 | Docker 重启、电脑重启后,容器自动拉起,不用手动重新启动 |
| -p 9876:9876 | 端口映射(宿主机端口:容器端口) | 宿主机的 9876 端口映射到容器的 9876 端口,客户端通过宿主机 IP:9876 访问 NameServer(9876 是 NameServer 默认端口,不可随意修改) |
| -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" | 设置 JVM 参数 | 限制容器占用的内存(初始 256M,最大 256M),避免容器因内存不足 OOM 崩溃,新手不用改这个值 |
| apacherocketmq/rocketmq:5.3.0 | 使用的 RocketMQ 官方镜像 | 版本和本地客户端保持一致(本文用 5.3.0,新手直接用这个版本,避免版本冲突) |
| sh mqnamesrv | 容器内执行的启动命令 | 启动 NameServer 服务,固定写法,不用修改 |
3. 验证启动成功(关键一步)
执行以下命令,查看 NameServer 日志,确认启动成功:
docker logs --tail 20 rmqnamesrv
出现以下内容,说明启动成功:
The Name Server boot success
四、部署 Broker(核心组件,最易踩坑)
Broker 是消息存储的核心,也是最容易踩坑的环节(之前遇到的 Broker 静默退出、注册失败,都和配置有关),新手严格按步骤来,不要随意修改参数。
1. 准备自定义配置文件(解决客户端连接不上的核心)
新建一个名为 broker.conf 的文件(任意目录,比如桌面),填入以下配置,重点修改 brokerIP1 为你的宿主机 IP:
# 集群名称,默认 DefaultCluster,和客户端配置一致即可
brokerClusterName = DefaultCluster
# Broker 名称,同一集群内唯一
brokerName = broker-a
# Broker ID,0 表示主节点,大于 0 表示从节点(新手先部署单主节点)
brokerId = 0
# 消息删除时间,默认凌晨 04 点
deleteWhen = 04
# 消息保留时间,默认 48 小时(可修改,比如 72 小时)
fileReservedTime = 48
# Broker 角色,ASYNC_MASTER 异步主节点(新手推荐,性能更好)
brokerRole = ASYNC_MASTER
# 刷盘策略,ASYNC_FLUSH 异步刷盘(新手推荐,兼顾性能和可靠性)
flushDiskType = ASYNC_FLUSH
# 关键配置:宿主机真实 IP(Windows/Linux 本机 IP),不能用 127.0.0.1/localhost
# 查看 IP:Windows 用 ipconfig,Linux 用 ifconfig
brokerIP1 = 192.168.1.105(替换成你的宿主机 IP)
# 开启自动创建 Topic,无需手动用 mqadmin 命令创建(新手必开)
autoCreateTopicEnable = true
2. Broker 启动命令(复制修改 IP 即可执行)
docker run -d \
--name rmqbroker \
--network rocketmq \
--restart always \
更多推荐



所有评论(0)