Portainer 中已创建卷的所有权

Portainer 中已创建卷的所有权

我刚刚开始使用 Docker 和 Portainer。

我使用 portainer 创建了一个堆栈,并通过相同的 docker-compose 为不同的应用程序添加了持久卷。

我的问题是,当编辑并保存在这些卷中创建的文件(例如 Nginx 配置)时,我收到“权限被拒绝”的提示,无法写入该文件。

当我进入文件夹并输入内容ls -l以检查所有权时,我发现 portainer 使用的每个文件夹都归 root 用户所有。

这是正常行为吗?我是否缺少 portainer 下的配置,或者我应该将这些卷的所有权更改为我的用户?

注意:我使用的是 portainer 1.23.1、docker 19.03.2 和 ubuntu 19.10。这是一个个人家庭实验室项目,但我也想知道它在生产中的表现如何。

答案1

在使用 docker 和 docker compose 几年后,我收到通知说这个问题仍然有效

此问题是由于 docker 默认使用 root 用户来运行容器(除非容器已经有指定的用户)。

--user=""为了防止出现此问题,应使用标志(或user: ""在 docker compose 中)并指定 uid,以与操作系统上相同的用户身份运行容器

前任:

services:
  mycontainer:
    image: myimage:latest
    user: "1000"

要获取用户 uid,只需运行命令id $USER

答案2

好奇,遇到了同样的问题。

但仅仅写作user: "1000"并不能解决问题(1000 - 是我的 uid/gid)

它仅有帮助:

    environment:
      - PUID=1000
      - PGID=1000

到目前为止,我不明白是什么导致了这种行为......


我想我已经知道问题出在哪里了:

相关内容