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

背景

使用docker-compose命令加载redis官方镜像实例时,映射的卷发生Permission denied错误,如图

关于docker-compose的volume映射发生Permission denied的解决_第1张图片

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

你可能感兴趣的:(Java,Web)