Ubuntu Docker容器创建由root拥有的目录,我需要它们由1000:1000拥有

Ubuntu Docker容器创建由root拥有的目录,我需要它们由1000:1000拥有,ubuntu,unix,docker,permissions,Ubuntu,Unix,Docker,Permissions,所以,我正在尝试创建docker图像,我成功地创建了一个。这是qBittorrent,一切都很顺利,直到它开始下载文件。所有qBits的目录都归1000:1000所有,但一旦它开始下载文件,我的docker主机就会说该文件夹归root:root所有 如何确保容器创建的所有内容都属于1000:1000 我需要它归它所有,因为其他Docker容器(如Radarr)需要访问文件以导入它们,而现在我得到了权限错误。 我曾尝试在主机上执行chown-r和setgid,但文件一直由root用户创建和拥有…

所以,我正在尝试创建docker图像,我成功地创建了一个。这是qBittorrent,一切都很顺利,直到它开始下载文件。所有qBits的目录都归
1000:1000
所有,但一旦它开始下载文件,我的docker主机就会说该文件夹归
root:root
所有

如何确保容器创建的所有内容都属于
1000:1000

我需要它归它所有,因为其他Docker容器(如Radarr)需要访问文件以导入它们,而现在我得到了权限错误。
我曾尝试在主机上执行
chown-r
setgid
,但文件一直由root用户创建和拥有…
我愿意接受所有建议:)谢谢

我的Dockerfile:


这取决于您的
docker run
命令。
我要将主机文件夹装载到映像中声明的卷

但是如果问题仍然存在,这可能意味着命令本身作为root用户执行一些操作(通过
sudo
commands)

对于测试,您可以尝试使用
userns
(docker 17.06或更高版本)。
见“”:

  • 创建具有已知本地主机用户id的
    /etc/subuid
    /etc/subgid
  • 使用该用户映射启动docker守护程序:

     dockerd --userns-remap="testuser:testuser"
    

并检查以前在托管卷中创建为root用户的文件现在是否由该映射用户拥有。

已设法将其修复。修复包括使用Dockerfile添加新用户。用户自动接收1000:1000作为UID和GID,但如果需要,可以将其替换为其他用户

然后,Dockerfile将作为用户使用user命令运行

用户使用的所有目录都必须是chown-R和chmod 2775-R(或任何其他目录,但前面必须是2或4,以便它们从主机文件夹继承权限)

还要确保公开并创建所有需要的卷,否则qbittorrent将不会启动。在这里创建/Downloads/temp非常重要,否则它会出现错误,因为它无法创建自己的,因为它不是以root用户身份运行的

Dockerfile在以下位置可用:


Ansible文件用于PlexGuide自动化项目,因此可以在那里查看。

好吧,我不使用docker run。。。我使用Ansible和一个.yml文件创建了我的容器:/你能用docker运行测试吗?我可以测试它,但它不适合mye的需要,因为我正在进行一个完全自动化的项目,Ansible是主要引擎。我正在试图找到一个可以在Dockerfile和/或entrypoint.sh中使用的解决方案。我目前没有使用entrypoint.sh文件,但如果有,我会使用to@KonstantinRusenkov安西布尔?这是不是类似于?(意思是Ansible没有使用你认为它是用户的部分)太好了,你是如何修复它的?好的,基本上就是我在回答中提到的建议。