You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统Docker启动Redis报append-only文件权限拒绝

故障原因

报错Can't open the append-only file: Permission denied的核心原因是运行Redis进程的用户对挂载的数据目录没有读写权限:

  • 你使用的bitnami/redis:6.0-debian-10镜像默认使用UID=1001的非root用户启动Redis服务,不会用root权限运行进程。
  • Windows环境下Docker Desktop默认使用WSL2作为运行后端,你在compose里挂载的本地路径/home/vagrant/var/Redis属于WSL内的目录,Windows宿主机、WSL、Docker容器三者间的文件权限映射不会自动给容器内的1001用户开放目录读写权,Redis启动时要在数据目录创建/写入AOF持久化文件时就会触发权限拒绝。
  • 如果之前启动失败已经在目录里残留了属主异常的文件,会进一步加剧权限问题。
解决方案

以下三种方案任选其一即可,均适配本地开发场景:

  • 快速修复(仅开发环境适用):给挂载目录开放全量读写权限
    进入WSL2终端,执行命令给目录递归授权:
    sudo chmod -R 777 /home/vagrant/var/Redis
    执行完成后删除旧的异常Redis容器,重新执行docker-compose up -d启动即可。
  • 调整容器运行用户(仅开发环境适用):修改docker-compose.yml配置,让容器内服务用root用户启动,绕过权限限制,配置示例如下:
    version: '2'
    services:
      redis:
        image: 'docker.io/bitnami/redis:6.0-debian-10'
        user: root
        environment:
          # ALLOW_EMPTY_PASSWORD is recommended only for development.
          - ALLOW_EMPTY_PASSWORD=yes
          - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
        ports:
          - '6379:6379'
        volumes:
          - '/home/vagrant/var/Redis:/bitnami/redis/data'
    
    注意:生产环境禁止使用root用户运行容器服务
  • 最优方案(无跨平台权限坑):改用Docker托管的命名卷替代本地路径挂载,Docker会自动处理卷和镜像内用户的权限匹配,不会出现权限映射问题,配置示例如下:
    version: '2'
    services:
      redis:
        image: 'docker.io/bitnami/redis:6.0-debian-10'
        environment:
          # ALLOW_EMPTY_PASSWORD is recommended only for development.
          - ALLOW_EMPTY_PASSWORD=yes
          - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
        ports:
          - '6379:6379'
        volumes:
          - 'redis_data:/bitnami/redis/data'
    
    volumes:
      redis_data:
    
    改完配置后执行docker-compose up -d即可正常启动,数据会持久化在Docker管理的命名卷中,不会丢失。

相关目录参考截图:
目录结构
redis-data文件夹内文件

内容的提问来源于stack exchange,提问作者MariaLurduRaj.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:21:20