Docker 安装 RabbitMQ,自定义数据卷位置启动失败,分析过程

Docker 安装 RabbitMQ,自定义数据卷位置启动失败,分析过程

问题描述

  • 运行docker命令,RabbitMQ启动失败,且没有特别错误日志
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/plugins:/opt/rabbitmq/plugins -v /xzlawin/mydocker/rabbitmq/volume/5672/log:/var/log/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/data:/var/lib/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/config:/etc/rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest 6c3c2a225947

分析原因

  • 容器内的文件未同步到数据卷映射的目录上,文件缺失,导致启动失败
分析步骤一,运行docker命令,使用默认数据卷位置,启动成功
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq 6c3c2a225947
  • 查看容器ID
docker ps
  • 查看数据卷信息
docker inspect [容器ID]

控制台显示

"Mounts": [
            {
                "Type": "volume",
                "Name": "rabbitmq_log",
                "Source": "/var/lib/docker/volumes/rabbitmq_log/_data",
                "Destination": "/var/log/rabbitmq",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "rabbitmq_plugins",
                "Source": "/var/lib/docker/volumes/rabbitmq_plugins/_data",
                "Destination": "/opt/rabbitmq/plugins",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "rabbitmq_config",
                "Source": "/var/lib/docker/volumes/rabbitmq_config/_data",
                "Destination": "/etc/rabbitmq",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "rabbitmq_data",
                "Source": "/var/lib/docker/volumes/rabbitmq_data/_data",
                "Destination": "/var/lib/rabbitmq",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
  • 删除容器
docker stop [容器ID]
docker ps -a [容器ID]
docker rm -f [容器ID]
分析步骤二,指定默认数据卷位置,启动成功
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=guest \
-e RABBITMQ_DEFAULT_PASS=guest \
-v /var/lib/docker/volumes/rabbitmq_config/_data:/etc/rabbitmq \
-v /var/lib/docker/volumes/rabbitmq_data/_data:/var/lib/rabbitmq \
-v /var/lib/docker/volumes/rabbitmq_log/_data:/var/log/rabbitmq \
-v /var/lib/docker/volumes/rabbitmq_plugins/_data:/opt/rabbitmq/plugins \
rabbitmq:management
  • 删除容器
docker stop [容器ID]
docker ps -a [容器ID]
docker rm -f [容器ID]
分析步骤三,指定自定义数据卷位置,启动失败
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/plugins:/opt/rabbitmq/plugins -v /xzlawin/mydocker/rabbitmq/volume/5672/log:/var/log/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/data:/var/lib/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/config:/etc/rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest 6c3c2a225947
  • 删除容器
docker stop [容器ID]
docker ps -a [容器ID]
docker rm -f [容器ID]
分析步骤四,查看自定义数据卷文件,发现文件没有同步目录为空
ll /xzlawin/mydocker/rabbitmq/volume/5672/plugins
ll /xzlawin/mydocker/rabbitmq/volume/5672/log
ll /xzlawin/mydocker/rabbitmq/volume/5672/data
ll /xzlawin/mydocker/rabbitmq/volume/5672/config

解决方法

  • 将默认数据卷文件,复制到自定义数据卷位置,启动成功
解决步骤一, 将默认数据卷文件,复制到自定义数据卷位置,启动失败
  • 将默认数据卷文件,复制到自定义数据卷位置
cp -r /var/lib/docker/volumes/rabbitmq_log/_data/* /xzlawin/mydocker/rabbitmq/volume/5672/log
cp -r /var/lib/docker/volumes/rabbitmq_plugins/_data/* /xzlawin/mydocker/rabbitmq/volume/5672/plugins
cp -r /var/lib/docker/volumes/rabbitmq_config/_data/* /xzlawin/mydocker/rabbitmq/volume/5672/config
cp -r /var/lib/docker/volumes/rabbitmq_data/_data/* /xzlawin/mydocker/rabbitmq/volume/5672/data
  • 指定数据卷位置,启动失败
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/plugins:/opt/rabbitmq/plugins -v /xzlawin/mydocker/rabbitmq/volume/5672/log:/var/log/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/data:/var/lib/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/config:/etc/rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest 6c3c2a225947
解决步骤二,查询日志,分析启动失败原因
  • 查询日志,发现log目录没有权限
docker logs -t --tail 50 [容器ID]
failed to open log file at '/var/log/rabbitmq/rabbit@ab5217e3f168_upgrade.log', reason: permission denied
  • 查看原数据卷目录是777权限
ll /var/lib/docker/volumes/rabbitmq_log/

显示

drwxrwxrwx 2 polkitd input 123 Jul 14 02:17 _data
  • 自定义日志数据卷目录,赋予777权限
chmod 777 /xzlawin/mydocker/rabbitmq/volume/5672/log
  • 删除容器
docker stop [容器ID]
docker ps -a [容器ID]
docker rm -f [容器ID]
解决步骤三,指定自定义数据卷位置,启动成功
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/plugins:/opt/rabbitmq/plugins -v /xzlawin/mydocker/rabbitmq/volume/5672/log:/var/log/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/data:/var/lib/rabbitmq -v /xzlawin/mydocker/rabbitmq/volume/5672/config:/etc/rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest 6c3c2a225947
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值