以下以RocketMQ 4.8.0为例。其余版本自行尝试
1. Docker安装RocketMQ
docker pull apache/rocketmq:4.8.0
2. 挂载Docker容器数据卷(初始版本)
mkdir -p /docker/rocketmq/data/{logs,store} /docker/rocketmq/conf
tee ./broker.conf <<-'EOF'
vi /docker/rocketmq/conf/broker.conf
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 10.111.43.74
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
EOF
3. 启动RocketMQ 实例
docker run \
-e JAVA_OPTS="-Xms256m -Xmx256m" \
-e "MAX_POSSIBLE_HEAP=300000000"\
-p 9876:9876 \
-p 10911:10911 \
-p 10909:10909 \
--privileged=true \
-v /docker/rocketmq/data/logs/:/root/logs/ \
-v /docker/rocketmq/data/store/:/root/store/ \
-v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.8.0/conf/broker.conf \
--restart=always \
--name rocketmq \
-d registry.cn-shanghai.aliyuncs.com/gmall_space66/rocketmq:4.8.0 sh mqbroker bin/bash mqnamesrv \
-c /opt/rocketmq-4.8.0/conf/broker.conf
4. 登录RocketMQ 实例
# 进入RocketMQ 实例
docker exec -it rocketmq /bin/bash
图形化管理控制台安装 【详见文章 Docker——(十一)RocketMQ-Console-ng 1.0.0安装篇 】