群晖 Docker 容器文件夹出现未知用户 UID 1000

问题背景

在 Docker 中,每个容器内部的应用程序通常以非 root 用户运行。默认情况下,容器中的第一个用户通常是 UID 1000。当容器在群晖 NAS 上运行时,容器内的 UID 1000 可能与宿主系统的实际用户 ID 不匹配,从而导致文件和文件夹的所有者显示为"未知用户/组:1000"。

例如,我们可以在以下图片中看到一个 Firefox 容器生成的文件夹,文件夹归属于 UID 1000 的未知用户:

解决方案

以下是具体的操作步骤,以确保容器内的用户 ID 与群晖系统的用户 ID 对齐。


1. 查看群晖系统中当前用户的 UID 和 GID

首先,我们需要知道群晖系统中当前用户的 UID 和 GID。您可以通过 SSH 登录群晖并运行以下命令:

bash 复制代码
sudo id yourusername

示例输出:

bash 复制代码
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_UIDUSER_GID 环境变量,以使其与宿主系统的用户和组 ID 匹配。

  1. 打开 Docker 容器管理器,找到并停止 Gitea 容器。
  2. 点击容器的"编辑"按钮,进入设置界面,选择"环境"标签。
  3. 找到 USER_UIDUSER_GID 环境变量,将其值设置为群晖系统的实际 UID 和 GID。
    • 例如,USER_UID=1026USER_GID=100
  4. 保存设置并重启容器。

以下是编辑环境变量的界面示例:

3. 修改已有文件夹的权限

即使已经在容器中设置了正确的 USER_UIDUSER_GID,之前生成的文件和文件夹可能仍保留着 UID 1000。为了确保权限一致,您可以手动更改文件夹的所有者。

  1. 使用 SSH 登录到群晖。

  2. 使用 chown 命令递归更改文件夹的所有者。例如,如果文件夹路径是 /volume1/docker/Gitea,可以运行以下命令:

    bash 复制代码
    sudo chown -R darker:users /volume1/docker/Gitea

    这会将文件夹的所有者更改为 darker 用户及其组 users

以下是更改文件夹权限后的效果:

总结

通过以上步骤,您可以解决群晖 Docker 容器文件夹中出现的"未知用户/组:1000"问题。这些调整确保了容器内生成的文件夹和文件的所有者与群晖系统的用户权限一致。

相关推荐
程序喵大人7 分钟前
【C++进阶】STL容器与迭代器 - 05 map 和 set 为什么按键保持有序
开发语言·c++·容器·迭代器·stl
huainingning1 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip
外滩运维专家1 小时前
十几台服务器要改配置,别再一台台 SSH 了
运维
风曦Kisaki2 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes
张忠琳2 小时前
【NVIDIA】NVIDIA k8s-device-plugin v0.19.3 资源管理器模块深度分析之三
云原生·容器·架构·kubernetes·nvidia
图件制作GIS,储量计算2 小时前
未来已到,抓住机遇
运维·服务器
CIO_Alliance2 小时前
AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
运维·人工智能·自动化
dok122 小时前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》(4) devicefile 设备号相关
linux·运维·服务器
毛驴赶鹿3 小时前
低配置服务器怎么搭建监控?Komari Docker部署与公网访问完整教程
运维·服务器·docker
Fu2067213 小时前
结课项目考试
linux·运维·服务器