Files
nexus/wiki/concepts/PUID-PGID.md
2026-04-22 19:20:32 +08:00

44 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PUID/PGID
## Type
- Concept
## Definition
PUIDProcess User ID和 PGIDProcess Group ID是 LinuxServer.io Docker 镜像专用的环境变量,用于将容器内进程以宿主机指定用户/组的身份运行,从根本上解决 Docker 容器创建文件的权限归属问题。
## Mechanism
### 核心原理
```
宿主机:用户 shenwei (UID=1000, GID=1000)
↓ 设置 PUID=1000, PGID=1000
容器内Transmission 进程以 UID=1000, GID=1000 运行
↓ 结果
容器创建的文件 → 归属 shenwei:shenwei → 宿主机可直接读写
```
### 获取宿主机 UID/GID
```bash
id shenwei
# 输出uid=1000(shenwei) gid=1000(shenwei) groups=1000(shenwei),...
```
### Docker Compose 配置示例
```yaml
environment:
- PUID=1000 # 对应宿主机用户 ID
- PGID=1000 # 对应宿主机组 ID
```
## Key Claims
- PUID/PGID 是 LinuxServer.io 镜像的标准化用户配置,与非 root 用户运行USER 环境变量)不同
- 不设置 PUID/PGID 时,容器进程以 rootUID=0运行创建的文件归属 root:root导致宿主机用户无法直接管理
- PUID/PGID 解决了"容器内 root vs 宿主机普通用户"的跨环境文件权限冲突
-`user: "1000:1000"` Docker Compose 顶级键效果类似,但 PUID/PGID 由 LinuxServer.io 镜像内部脚本处理
## Relationship to [[LinuxServer.io]]
PUID/PGID 是 LinuxServer.io 所有镜像的标准化配置环境变量,属于其官方推荐的最佳实践。
## Sources
- [[用docker安装transmission]]