相关疑难解决方法(0)

管理Docker共享卷权限的(最佳)方法是什么?

我一直在玩Docker一段时间,并在处理持久数据时继续寻找相同的问题.

创建我Dockerfile暴露量或使用--volumes-from安装我的容器内的主文件夹.

我应该对主机上的共享卷应用哪些权限?

我可以想到两个选择:

  • 到目前为止,我已经给了每个人读/写访问权限,所以我可以从Docker容器写入该文件夹.

  • 将用户从主机映射到容器,这样我就可以分配更细化的权限.不确定这是可能的,但没有找到太多关于它.到目前为止,我所能做的就是以某个用户身份运行容器:docker run -i -t -user="myuser" postgres但是此用户的UID与我的主机不同myuser,因此权限不起作用.此外,我不确定映射用户是否会带来一些安全风险.

还有其他选择吗?

你们这些人/女士如何应对这个问题?

docker

328
推荐指数
9
解决办法
23万
查看次数

了解docker中的用户文件所有权:如何避免更改链接卷的权限

考虑以下简单的Dockerfile:

FROM debian:testing
RUN  adduser --disabled-password --gecos '' docker
RUN  adduser --disabled-password --gecos '' bob 
Run Code Online (Sandbox Code Playgroud)

在一个没有别的工作目录.构建docker镜像:

docker build -t test .
Run Code Online (Sandbox Code Playgroud)

然后在容器上运行bash脚本,将工作目录链接到bob主目录中的新子目录:

docker run --rm -it -v $(pwd):/home/bob/subdir test 
Run Code Online (Sandbox Code Playgroud)

谁拥有subdir容器上的内容?在容器上,运行:

cd /home/bob/subdir
ls -l
Run Code Online (Sandbox Code Playgroud)

广告我们看到:

-rw-rw-r-- 1 docker docker 120 Oct 22 03:47 Dockerfile
Run Code Online (Sandbox Code Playgroud)

圣烟!docker拥有内容!回到容器外的主机上,我们看到我们的原始用户仍然拥有Dockerfile.让我们尝试修复bob主目录的所有权.在容器上,运行:

chown -R bob:bob /home/bob
ls -l 
Run Code Online (Sandbox Code Playgroud)

我们看到:

-rw-rw-r-- 1 bob bob 120 Oct 22 03:47 Dockerfile
Run Code Online (Sandbox Code Playgroud)

可是等等!在容器外面,我们现在运行ls -l

-rw-rw-r-- 1 1001 1001 120 Oct 21 20:47 …
Run Code Online (Sandbox Code Playgroud)

linux permissions rstudio docker

63
推荐指数
3
解决办法
7万
查看次数

标签 统计

docker ×2

linux ×1

permissions ×1

rstudio ×1