Docker 安装量。没有权限

Docker mounting volume. Permission denied

我在安装的 docker 卷中创建新文件时遇到问题。

首先在安装后 docker 我将我的用户添加到 docker 组。

sudo usermod -aG docker $USER

创建为我的 $USER 文件夹:

mkdir -p /srv/redis

和起始容器:

docker run -d -v /srv/redis:/data --name myredis redis

当我想以创建容器的用户身份在 /srv/redis 中创建文件时,我遇到了访问问题。

mkdir /srv/redis/redisTest
mkdir: cannot create directory ‘/srv/redis/redisTest’: Permission denied

我尝试在其他线程中搜索,但没有找到合适的解决方案。

我认为 /srv/redis/redisTest 目录是由 redis 容器内的用户创建的,因此它属于 redis 容器用户。

您是否已使用 ls -l 检查 /srv/redis/redisTest 目录是否属于 $USER

问题标题并没有反映出我认为的真正问题。

mkdir /srv/redis/redisTest
mkdir: cannot create directory ‘/srv/redis/redisTest’: Permission denied

出现此问题的可能性很大,因为当您 运行:

docker run -d -v /srv/redis:/data --name myredis redis

目录 /srv/redis 所有权更改为 root。您可以通过

检查
ls -lah /srv/redis

这是将外部目录挂载到 docker 的正常结果。要重新获得访问权限,您必须 运行

sudo chown -R $USER /srv/redis

这也可能与激活 SELinux 有关(正如我刚刚发现的)。 This answer on the DevOps Stack Exchange worked for me:

The solution is to simply append a :z to the [docker] run volume argument so that this:

docker run -v /host/foobar:/src_dir /bin/bash

becomes this:

docker run -it -v /host/foobar:/src_dir:z /bin/bash