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
我在安装的 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