稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Golang
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
    • Euler
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 文章分类
  3. Java
  4. 正文

Docker 部署 RocketMQ

2026年7月22日 15点热度 0人点赞

1.拉取镜像

 docker pull apache/rocketmq:latest

2.创建共享网络

为什么要创建 docker 共享网络?
容器间通信:创建一个 Docker 网络可以确保同一个网络中的容器可以通过容器名称进行通信,而不需要知道对方的 IP 地址。这对于需要相互通信的服务非常重要,比如 RocketMQ 的多个组件(如 NameServer 和 Broker)。
隔离性和安全性:Docker 网络提供了一个隔离的网络环境,不同网络中的容器彼此隔离。这增加了安全性,防止外部或其他不相关的容器访问敏感服务。
简化配置:使用 Docker 网络,配置变得更加简单。容器可以通过名称互相访问,无需担心容器重启后 IP 地址发生变化。
docker network create rocketmq

3.复制启动脚本

为了把启动脚本持久化到本地,需要先启动容器,然后将容器内部的启动脚本 cp 到本地。
# 创建目录
mkdir -p /opt/rocketmq/nameserver/{bin,logs}

# 授权文件
chmod 777 -R /opt/rocketmq/nameserver/*

# 创建容器
docker run -d \
--privileged=true --name rocketmq \
apache/rocketmq:latest sh mqnamesrv

# 拷贝启动脚本,注意版本号,因为拉取的 latest 版本,启动后可以先进容器内部查看目录
docker cp rocketmq:/home/rocketmq/rocketmq-5.5.0/bin/runserver.sh /opt/rocketmq/nameserver/bin/

# 删除容器 NameServer
docker rm -f rocketmq

4.启动容器

# 启动容器 NameServer,,注意版本号,因为拉取的 latest 版本,启动后可以先进容器内部查看目录
docker run -d \
--restart=always \
--network rocketmq \
-p 9876:9876 \
-v /opt/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /opt/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.5.0/bin/runserver.sh \
--name rocketmq \
apache/rocketmq:latest sh mqnamesrv

# 部分命令解释 : 
# -e "MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小
# -e "HEAP_NEWSIZE=128M"  设置新生代内存大小

# 查看启动日志,显示:The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876,即为启动成功
docker logs -f rocketmq

5.部署 Broker + Proxy

1、创建挂载文件夹并授权
mkdir -p /opt/rocketmq/broker/{store,logs,conf,bin}
chmod 777 -R /opt/rocketmq/broker/*
2、创建 broker.cnf 文件
vim /opt/rocketmq/broker/conf/broker.conf
# nameServer 地址多个用;隔开 默认值null,例:127.0.0.1:6666;127.0.0.1:8888
namesrvAddr = 192.168.67.100:9876
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址  String  内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.67.100
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 禁用 tsl
tlsTestModeEnable = false
3、复制启动脚本
# 启动 Broker 容器,注意版本号,因为拉取的 latest 版本,启动后可以先进容器内部查看目录
docker run -d \
--name rocketmq-broker --privileged=true \
apache/rocketmq:latest sh mqbroker

# 拷贝脚本文件
docker cp rocketmq-broker:/home/rocketmq/rocketmq-5.5.0/bin/runbroker.sh /opt/rocketmq/broker/bin

# 删除容器 Broker
docker rm -f rocketmq-broker
4、启动容器 Broker
# 启动容器 Broker,注意版本号,因为拉取的 latest 版本,启动后可以先进容器内部查看目录
docker run -d --restart=always \
--network rocketmq \
-p 10911:10911 -p 10909:10909 \
-v /opt/rocketmq/broker/logs:/root/logs \
-v /opt/rocketmq/broker/store:/root/store \
-v /opt/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /opt/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.5.0/bin/runbroker.sh \
-e "NAMESRV_ADDR=rocketmq:9876" \
--name rocketmq-broker \
apache/rocketmq:latest sh mqbroker \
--enable-proxy -c /home/rocketmq/broker.conf

# 查看启动日志,显示:rocketmq-proxy startup successfully 即为启动成功
docker logs --tail 3000 rocketmq-broker

6.部署可视化控制台

注意:
    • 有些 apacherocketmq/rocketmq-dashboard 版本指向的端口为 8080,可以先启动,再看日志使用的 tomcat 使用的端口再确定映射端口。
    • 启动命令的环境变量 -Drocketmq.namesrv.addr 指向的容器名 rocketmq 也要注意与上面启动 rocketmq 容器名一致。
# 拉取镜像
docker pull apacherocketmq/rocketmq-dashboard:latest

# 启动容器
docker run -d --restart=always \
--network rocketmq \
-p 8082:8082 \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rocketmq:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
--name rocketmq-dashboard \
apacherocketmq/rocketmq-dashboard

# 查看日志,显示:Tomcat started on port 8082 (http) with context path '/' 即为启动成功
docker logs -f rocketmq-dashboard
访问地址:http://localhost:8082
标签: Docker RocketMQ
最后更新:2026年7月22日

Akim

犇 骉 古法 AI 双修者 Java、C#、Python、Go、Android、Vue、Bootstrap

点赞
< 上一篇
文章目录
  • 1.拉取镜像
  • 2.创建共享网络
  • 3.复制启动脚本
  • 4.启动容器
  • 5.部署 Broker + Proxy
  • 6.部署可视化控制台

Copyright © 2026 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号