【RocketMQ、Docker】Docker 安装 RocketMQ-4.9.3:总结遇到的问题

一、容器挂载数据存放的根目录后容器启动不成功。

背景

broker容器启动成功后,默认的数据存在位置在容器内部的/home/rocketmq/store中,当我们挂载该目录后,会导致容器无法启动成功。
使用的命令:

docker run -d --name rocketmq-broker-a --network rocketmq \
-p 10909:10909 -p 10911:10911 -p 10912:10912 \
-v /home/docker/mount/rocketmq/broker/broker-a/logs:/home/rocketmq/logs \
-v /home/docker/mount/rocketmq/broker/broker-a/store:/home/rocketmq/store \
-v /home/docker/mount/rocketmq/broker/broker-a/conf:/home/rocketmq/rocketmq-4.9.3/conf \
apache/rocketmq:4.9.3 sh mqbroker -c /home/rocketmq/rocketmq-4.9.3/conf/broker.conf

分析

通过排查发现,创建挂载的目录是root权限创建得,而容器默认使用的是rocketmq权限。所以无法做写入操作。
【RocketMQ、Docker】Docker 安装 RocketMQ-4.9.3:总结遇到的问题_第1张图片
【RocketMQ、Docker】Docker 安装 RocketMQ-4.9.3:总结遇到的问题_第2张图片

解决方案:

映射本地目录权限设置为 777 权限。设置之后在创建容器。
参考链接

二、容器内部提示:bash: cd: /root: Permission denied

背景

使用docker exec -it 容器ID /bin/bash命令进入Broker容器、NameServer容器后操作由root权限创建得文件夹时,会提示Permission denied。
在这里插入图片描述

原因

目录是root权限创建得,而容器默认使用的是rocketmq权限,所以提示没有权限。

解决方案:

使用docker exec -it -u root 容器ID /bin/bash命令进入容器。

docker exec -it -u root 容器ID /bin/bash

你可能感兴趣的:(RocketMQ,Docker,docker,容器,java,RocketMQ)