关于docker-compose的volume映射发生Permission denied的解决

背景

使用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
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值