背景
使用docker-compose命令加载redis官方镜像实例时,映射的卷发生Permission denied错误,如图
docker-compose.yml
可以看到,我将目录里的data/redis文件夹与实例里的/data进行映射
version: '3'
services:
redis:
image: redis:alpine
container_name: sc-redis
restart: always
volumes:
- ./data/redis:/data
environment:
- REDIS_PASSWORD=123456
#command: redis-cli config set requirepass 123456
networks:
- sc-net
ports:
- 6379:6379
问题追溯
-
我将yml的映射注释掉后,再次启动实例,进去实例查看
# docker exec -it containerId /bin/sh
# cd /
# ls -l
- 发现官方实例里除了/data,其余都是root用户权限,/data是redis权限
解决
一、修改本地的用户及文件夹权限
这种方法网上可以查询得到,大概就是增加一个id一样的用户及用户组(这里是redis),但我没有成功,仍然是报权限错误,懂得解决的大神可以留言帮助
二、修改yml
往yml里增加一个privileged: true,表示允许特权,这个亲测可用,但按安全性方面来说,不如第一种,若第一种无法实现再考虑第二种
version: '3'
services:
redis:
image: redis:alpine
container_name: sc-redis
restart: always
privileged: true
volumes:
- ./data/redis:/data
environment:
- REDIS_PASSWORD=123456
#command: redis-cli config set requirepass 123456
networks:
- sc-net
ports:
- 6379:6379