前置准备(必看)

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 \
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐