Docker Redis 使用 -v 启动持久存储会出现错误(chown:更改“.”的所有权:权限被拒绝)

问题描述 投票:0回答:2

我正在使用以下系统版本/规范来使用默认的 redis.conf 设置 docker-redis

Redhat version: 7.6 (Red Hat Enterprise Linux Server)
Redis Version: 5.0.4
Docker Version:  1.13.1, build b2f74b2/1.13.1

当我运行以下命令时,它工作得很好。

sudo docker run -d -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf --name redis-persistance --net tyk -p 7070:6379 redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

我需要将redis数据(位于容器内的/data中)获取到主机目录(/usr/local/etc/redis/data)(-v $PWD/data:/data) 。因此,当我运行以下命令时,我收到以下错误。 注意 $PWD = /usr/local/etc/redis/

sudo docker run -d -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name redis-persistance --net tyk -p 7070:6379 redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

docker 日志中的错误:

journal: chown: changing ownership of '.': Permission denied
level=warning msg="05ce842f052e28566aed0e2eab32281138462cead771033790266ae145fce116 cleanup: failed to unmount secrets: invalid argument"

我还尝试将主机中 data 文件夹的所有权更改为以下。 chown redis:redis 数据

drwxrwxrwx. 2 redis redis     6 May  3 07:11 data

有人可以帮我解决这个问题吗?谢谢。

linux docker redis dockerfile redhat
2个回答
2
投票

首先创建一个卷:

docker volume create redis_data

检查卷是否已创建(注意装载点):

docker volume inspect redis_data

然后使用此卷来启动您的容器:

sudo docker run -d -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -v redis_data:/data --name redis-persistance --net tyk -p 7070:6379 redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

然后您可以检查“Mountpoint”的内容,这应该是redis数据。


0
投票

对我有用的是添加一个安全上下文,例如:

spec:
  securityContext:
    runAsUser: 999
    runAsGroup: 999
    fsGroup: 999

然后将挂载点的所有权更改为 999:

chown -R 999:999 your_redis_mountpoint
© www.soinside.com 2019 - 2024. All rights reserved.