Docker中RocketMQ的安装与使用

搜索RocketMQ的镜像,可以通过docker的hub.docker.com上进行搜索,也可以在Linux下通过docker的search命令进行搜索,不过最近防火墙升级后,导致国外的网站打开都很慢,通过命令搜索反而会更加方便,操作Docker命令一定要是root用户或者具有root权限的用户。查询操作如下:

docker search rocketmq

可以得到如下的结果:

镜像倒是蛮多的,不过看来看去没有一个是官方发布的,我就随便选一个吧,如foxiswho/rocketmq,以下是一个查看当前镜像所有的版本shell命令:

curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags\
| tr -d '[\[\]" ]' | tr '}' '\n'\
| awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'

如果要查看其它的镜像,只需要将其中的镜像名称foxiswho/rocketmq替换为其它镜像即可,执行该命令得到大致如下结果:

下面的就是分步启动nameserver和broker。

启动NameServer:

docker run -d -p 9876:9876 --name rmqserver  foxiswho/rocketmq:server-4.5.1

启动broker:

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 foxiswho/rocketmq:broker-4.5.1

Broker容器中默认的配置文件的路径为:

/etc/rocketmq/broker.conf

也可以通过-v参数指定本机的配置文件:

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 -v /conf/broker.conf:/etc/rocketmq/broker.conf \
 foxiswho/rocketmq:broker-4.5.1

如果一切正常,NameServer和Broker一会儿就会安装好,为了管理上的方便,rocketmq console也是必不可少的工具了,通过上面查询的方式找到需要启动的版本,启动方式如下:

docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\
 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
 -t styletang/rocketmq-console-ng

然后通过如下命令检查一下启动情况:

docker ps|grep rocketmq

结果如下:

再通过浏览器访问localhost:8180,console的页面显示如下:

 

### 使用 Docker 在 Windows 上部署 RocketMQ #### 安装 Docker Desktop 为了在 Windows 上运行 Docker,需先安装 Docker Desktop。确保已启用 Hyper-V 和 Containers 功能,并完成 Docker Desktop 的安装启动。 #### 启动命名网络 创建自定义桥接网络有助于容器间通信: ```bash docker network create rocketmq-net ``` 此命令建立了一个名为 `rocketmq-net` 的虚拟网络环境[^1]。 #### 部署 NameServer NameServerRocketMQ 发现服务的核心组件之一。使用官方镜像来启动 NameServer 实例: ```bash docker run -d --name namesrv \ --network rocketmq-net \ -p 9876:9876 \ apache/rocketmq:latest namesrv ``` 上述指令指定了端口映射和加入之前创建的网络。 #### 设置 Broker 节点 Broker 承担着实际的消息收发工作。下面展示如何配置主从架构中的 Master Broker: ```bash docker run -d --name master-broker \ --network rocketmq-net \ -e "NAMESRV_ADDR=namesrv:9876" \ -v C:\path\to\broker.conf:/etc/rocketmq/broker.conf \ -p 10911:10911 -p 10909:10909 \ apache/rocketmq:latest broker -c /etc/rocketmq/broker.conf ``` 注意 `-v` 参数用于挂载本地文件路径至容器内部;请替换为具体位置。另外两个暴露端口中前者供客户端连接而后者则是心跳检测用途[^4]。 对于 Slave Broker,则需要额外指定参数使其成为副本节点: ```bash docker run -d --name slave-broker \ --network rocketmq-net \ -e "NAMESRV_ADDR=namesrv:9876" \ -e "BROKER_ROLE=SLAVE" \ -e "MASTER_ADDRESS=master-broker:10911" \ -v C:\path\to\slave_broker.conf:/etc/rocketmq/slave_broker.conf \ -p 10912:10911 \ apache/rocketmq:latest broker -c /etc/rocketmq/slave_broker.conf ``` 这里设置了 `BROKER_ROLE` 环境变量表示角色身份,并通过 `MASTER_ADDRESS` 来关联对应的Master实例地址。 #### 常见问题处理 - **无法访问外部 IP**: 如果遇到从宿主机以外的地方无法访问的情况,请确认防火墙规则允许相应端口通行。 - **磁盘空间不足错误**: 当存储卷所在分区剩余容量过低时可能会报错,建议定期清理不必要的日志或调整存放目录。 - **跨版本兼容性问题**: 尽量保持各组件版本一致以减少潜在冲突风险,在升级前务必测试新旧版间的互操作情况。
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值