服务器厂商:腾讯云
服务类型 :CentOS-7.6
搜索镜像
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:4.8.0
拉取镜像
docker pull foxiswho/rocketmq:4.8.0
启动服务
rocketmq 有2个服务需要启动:namesrv 和 broker
1 启动namesrv服务
docker run -d -p 9876:9876 -v `pwd`/data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" foxiswho/rocketmq:4.8.0 sh mqnamesrv
2 启动broker服务
docker run -d -p 10911:10911 -p 10909:10909 -v /usr/data/broker/logs:/root/logs
-v /usr/data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000"
-v /usr/congin/broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
foxiswho/rocketmq:4.8.0 sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
注:pwd 为执行命令的当前目录
安装Rocketmq控制台
docker search rocketmq-console
这里使用第一个 styletang/rocketmq-console-ng
拉取镜像
docker pull styletang/rocketmq-console-ng
启动容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
可以使用容器ip 也可以使用宿主ip 两种方法
获取docker容器的ip,进入到rmqnamesrv容器中,执行下面命令:
docker exec -it rmqnamesrv bash
cat /etc/hosts
使用宿主ip namesrv.addr=填写你服务器外网地址
docker run --network=host -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
然后启动访问ip+8080地址
访问的时候会出现sendDefaultImpl call timeout连接超时问题解决
在启动broker服务的时候使用配置文件启动 此配置文件路径为docker默认安装路径
-c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
记得启动的时候添加映射文件
Rocketmq配置文件如下
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 127.0.0.1 #宿主ip地址(外网地址)