Permissions 如何在podman中设置已装入的文件夹权限 摘要

Permissions 如何在podman中设置已装入的文件夹权限 摘要,permissions,podman,rootless,Permissions,Podman,Rootless,当我将一个文件夹装载到我的容器中,并且该文件夹的路径尚未在客户端上创建时,podman将为我创建它。我可以设置主机上已装载文件夹的权限,使其与容器用户相匹配,但创建的路径文件夹没有相同的权限 复制步骤 例如,让我们假设在我的图像中,用户的主目录为空。然后我将在主机上执行以下操作: $ mkdir foo $ podman unshare chown 1000:100 foo $ podman run -v $PWD/foo:/home/myuser/bar/foo:z [...] some/im

当我将一个文件夹装载到我的容器中,并且该文件夹的路径尚未在客户端上创建时,
podman
将为我创建它。我可以设置主机上已装载文件夹的权限,使其与容器用户相匹配,但创建的路径文件夹没有相同的权限

复制步骤 例如,让我们假设在我的图像中,用户的主目录为空。然后我将在主机上执行以下操作:

$ mkdir foo
$ podman unshare chown 1000:100 foo
$ podman run -v $PWD/foo:/home/myuser/bar/foo:z [...] some/image:latest
这将在我的容器上产生如下结果:

~ # ls -la
drwxr-xr-t    3 root     root          4096 Jan 28 12:43 bar
~ # cd bar
~/bar # ls -la
drwxrwxr-x    2 1000     users         4096 Jan 28 12:42 foo
~/bar # 
  • 这种行为是故意的吗
  • 有没有办法告诉podman使用与目标文件夹相同的权限创建路径
我可以想象一个解决方案,但如果我能在run命令中告诉它,那就太好了

用例 在我的例子中,我尝试直接从docker.io运行不同的jupyter笔记本作为一次性容器。但我确实想分享用户设置。容器装载卷时,用户设置文件夹不存在。所以podman将创建它们,但作为根。因此jupyter用户无法访问由podman创建的文件夹,并且将失败

  • 我可以从图像创建一个构建文件,并在构建阶段创建文件夹。但是我一直在使用不同的图像,我不想为我所有的用例创建自定义图像
  • 我可以将卷装载到父文件夹,但是所有不同的内容都存储在那里,我不想将其共享到所有不同的容器
  • 我无法在初次启动后处理这些容器,但我不知道何时我想重新使用这个容器,如果有的话

是否可以使用
--uidmap
命令行选项将
jupyter
用户映射到您的用户

(未经测试)

我认为,当容器以容器根用户的身份启动,然后以另一个用户的身份运行一个程序时,需要这样做。如果另一个用户将在绑定装载的目录中写入文件,则这些文件将由主机上的普通用户所有。不过,我不知道你的Jupyter容器图像是否如此

$ mkdir foo
$ jupyterUID=1234  # Replace 1234 with the correct UID for the jupyter user
$ podman run -v $PWD/foo:/home/myuser/bar/foo:z [...] --uidmap=0:1:$jupyterUID --uidmap=$(expr $jupyterUID + 1):$(expr $jupyterUID + 1):$(expr 65536 - $jupyterUID - 1) --uidmap=${jupyterUID}:0:1 some/image:latest