docker安装rabbitmq遇到Permission denied

1、安装脚本,前提是已安装好docker

docker run -d --net host --name rabbitmq -v /home/rabbitmq:/var/lib/rabbitmq -v /opt/rabbitmq/hosts:/etc/hosts -v /rabbitmqconfig/rabbitmq:/etc/rabbitmq/ -p 4369:4369 -p 5672:5672 -p 15672:15672 -p 25672:25672 -e TZ="Asia/Shanghai" -e RABBITMQ_DEFAULT_USER="rabbitmq" -e RABBITMQ_DEFAULT_PASS=123456  rabbitmq:management

2、不出意外的话,docker容器启动会报错,启动不了,原因是我们挂载了配置文件目录,没有权限操作,报错信息如下:
在这里插入图片描述

touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Permission denied
touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Permission denied

3、这个错的意思是,没有权限操作这个文件。网上查了好久,给出的解决办法:在挂载目录后多加一个–privileged=true参数 ,本人测试几次无效;还有的说是进入容器,然后给目录赋权,类似参考,我想知道容器都起不来,是怎么进去赋权的。。。
4、后来操作又遇到一种情况是没有权限操作/etc/rabbitmq/文件夹下面的配置文件,但是容器起来了,这个时候就是上面说的那种进去赋权的情况了,赋权之后重启容器就可以了。
在这里插入图片描述

touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Permission denied
WARNING: '/etc/rabbitmq/rabbitmq.conf' is not writable, but environment variables have been provided which request that we write to it
  We have copied it to '/tmp/rabbitmq.conf' so it can be amended to work around the problem, but it is recommended that the read-only source file should be modified and the environment variables removed instead.

1.先进入容器
 docker exec -it 容器id  /bin/bash
 chmod a+rwx -R etc
 chmod a+rwx -R log
 chmod a+rwx -R lib
 exit 退出容器  
 docker restart 容器id 重启容器

5、我本地的解决办法是,先创建一个没有目录映射的容器

docker run -d --net host --name rabbitmq  -p 4369:4369 -p 5672:5672 -p 15672:15672 -p 25672:25672 -e TZ="Asia/Shanghai" -e RABBITMQ_DEFAULT_USER="rabbitmq" -e RABBITMQ_DEFAULT_PASS=123456  rabbitmq:management

然后把docker里面没有目录映射容器的配置文件复制一份出来(进入容器使用docker cp -a 容器id:/etc/rabbitmq /rabbitmqconfig/rabbitmq/),放到指定目录下,作为带映射目录容器的映射路径。然后在创建带映射路径的容器,启动就不会报错了,亲测是没有问题的。容器中配置文件目录为:/etc/rabbitmq

6.容器中相关目录说明:

进入容器:
docker exec -it rabbit /bin/bash
配置文件目录:/etc/rabbitmq
数据存储目录:/var/lib/rabbitmq
日志目录:/var/log/rabbitmq

你可能感兴趣的:(rabbitmq)