docker容器安装部署rocketmq

docker拉取rcketmq镜像

1、搜索rocketmq镜像

docker search rocketmq

2、拉取镜像

docker pull rocketmqinc/rocketmq

3、创建挂载文件目录

mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store

4、创建namesrv(需要加权的话前面加个sudo,无需挂载目录可以将 -v 参数去掉)

docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876  -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

参数说明:

	-d	以守护进程的方式启动
    --restart=always	docker重启时候容器自动重启
    --name rmqnamesrv	把容器的名字设置为rmqnamesrv 		-p 9876:9876	把容器内的端口9876挂载到宿主机9876上面 		
    -v  /docker/rocketmq/nameserver/logs:/root/logs	目录挂载 		
    -v  /docker/rocketmq/nameserver/store	目录挂载 		rmqnamesrv	容器的名字 		
    -e  “MAX_POSSIBLE_HEAP=100000000”	设置容器的最大堆内存为100000000
    rocketmqinc/rocketmq	使用的镜像名称 		sh mqnamesrv	启动namesrv服务

4、创建broker

docker run  --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" -itd  rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
	参数说明:
	-itd	 it使用交互式方式运行 d后台运行
	--restart=always	docker重启时候容器自动重启
	--name rmqbroker	把容器的名字设置为rmqbroker
	--link rmqnamesrv:namesrv	和rmqnamesrv容器通信
	-p 9876:9876	把容器内的端口9876挂载到宿主机9876上面
	-p 10909:10909	把容器的vip通道端口挂载到宿主机
	-e “NAMESRV_ADDR=namesrv:9876”	指定namesrv的地址为本机namesrv的ip地址:9876
	-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker	指定broker服务的最大堆内存
	rocketmqinc/rocketmq	使用的镜像名称
	sh mqbroker -c /opt/docker/rocketmq/broker.conf	指定配置文件启动broker节点

这样就可以连接了
broker.conf 配置文件(文件位置:容器内 /opt/rocketmq/conf/broker.conf)里需加入一个配置 : autoCreateTopicEnable = true 这样才会自动创建topic

运行中可能出现的问题

1、我在创建broker创建namesrv和broker的时候没有进行目录挂载,如果有失败的可以把目录挂载去掉然后通过如下命令将文件复制到容器中
#从宿主机复制文件到容器(前面宿主机,后面为容器 centos为容器名)

sudo docker cp 目录/文件 centos:目录

#从容器复制文件到宿主机(前面容器,后面为宿主机 centos为容器名)

sudo docker cp centos:目录/文件 目录

2、我们使用docker exec -it /bin/bash 命令进入broker容器内时可能会出现如下错误:

Error response from daemon: Container XXX is restarting, wait until the container is running	

我使用 docker logs 容器id 打印日志并没有打印出来什么,猜测可能是一直在循环启动(具体原因未知,没有进行排查) 就把启动容器命令中的 --restart=always 自动重启给去掉了,再次运行成功

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Docker部署 RocketMQ 服务,可以按照以下步骤进行: 1. 首先,在本地或云服务器上安装 Docker。 2. 下载 RocketMQDocker 镜像。可以使用以下命令: ``` docker pull rocketmqinc/rocketmq ``` 这将从 Docker Hub 上下载最新版本的 RocketMQ 镜像。 3. 创建一个 Docker 网络。可以使用以下命令: ``` docker network create rocketmq-net ``` 这将创建一个名为 `rocketmq-net` 的 Docker 网络。 4. 启动一个名为 `rocketmqnamesrv` 的 Docker 容器来运行 Name Server。可以使用以下命令: ``` docker run -d --name rocketmqnamesrv --network rocketmq-net -p 9876:9876 rocketmqinc/rocketmq sh mqnamesrv ``` 这将启动一个名为 `rocketmqnamesrv` 的容器,并将其连接到 `rocketmq-net` 网络。还会将 Name Server 的端口映射到主机的 `9876` 端口。 5. 启动一个名为 `rocketmqbroker` 的 Docker 容器来运行 Broker。可以使用以下命令: ``` docker run -d --name rocketmqbroker --network rocketmq-net -p 10909:10909 -p 10911:10911 -e "NAMESRV_ADDR=rocketmqnamesrv:9876" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.9.0/conf/broker.conf -n rocketmqnamesrv:9876 ``` 这将启动一个名为 `rocketmqbroker` 的容器,并将其连接到 `rocketmq-net` 网络。还会将 Broker 的端口映射到主机的 `10909` 和 `10911` 端口。在此命令中,我们还指定了 Name Server 的地址和端口。 6. 等待几秒钟,直到容器启动并运行成功。可以使用以下命令检查容器的运行状态: ``` docker ps ``` 这将列出所有正在运行的 Docker 容器。 现在,RocketMQ 服务已经在 Docker 容器中成功部署并运行。可以使用客户端应用程序连接到它并使用它来发布和订阅消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值