群晖 Docker 容器文件夹出现未知用户 UID 1000
问题背景
在 Docker 中,每个容器内部的应用程序通常以非 root 用户运行。默认情况下,容器中的第一个用户通常是 UID 1000
。当容器在群晖 NAS 上运行时,容器内的 UID 1000
可能与宿主系统的实际用户 ID 不匹配,从而导致文件和文件夹的所有者显示为“未知用户/组:1000”。
例如,我们可以在以下图片中看到一个 Firefox 容器生成的文件夹,文件夹归属于 UID 1000
的未知用户:
解决方案
以下是具体的操作步骤,以确保容器内的用户 ID 与群晖系统的用户 ID 对齐。
1. 查看群晖系统中当前用户的 UID 和 GID
首先,我们需要知道群晖系统中当前用户的 UID 和 GID。您可以通过 SSH 登录群晖并运行以下命令:
sudo id yourusername
示例输出:
darker@LY_Synology:~$ sudo id darker
Password:
uid=1026(darker) gid=100(users) groups=100(users),101(administrators)
在这个例子中,用户 darker
的 UID 是 1026
,GID 是 100
。
2. 在 Docker 容器管理器中设置正确的 UID 和 GID
以 Gitea 容器为例,我们可以调整其 USER_UID
和 USER_GID
环境变量,以使其与宿主系统的用户和组 ID 匹配。
- 打开 Docker 容器管理器,找到并停止 Gitea 容器。
- 点击容器的“编辑”按钮,进入设置界面,选择“环境”标签。
- 找到
USER_UID
和USER_GID
环境变量,将其值设置为群晖系统的实际 UID 和 GID。- 例如,
USER_UID=1026
,USER_GID=100
。
- 例如,
- 保存设置并重启容器。
以下是编辑环境变量的界面示例:
3. 修改已有文件夹的权限
即使已经在容器中设置了正确的 USER_UID
和 USER_GID
,之前生成的文件和文件夹可能仍保留着 UID 1000
。为了确保权限一致,您可以手动更改文件夹的所有者。
-
使用 SSH 登录到群晖。
-
使用
chown
命令递归更改文件夹的所有者。例如,如果文件夹路径是/volume1/docker/Gitea
,可以运行以下命令:sudo chown -R darker:users /volume1/docker/Gitea
这会将文件夹的所有者更改为
darker
用户及其组users
。
以下是更改文件夹权限后的效果:
总结
通过以上步骤,您可以解决群晖 Docker 容器文件夹中出现的“未知用户/组:1000”问题。这些调整确保了容器内生成的文件夹和文件的所有者与群晖系统的用户权限一致。