all-in-one(boom) docker 和 群晖是两个虚拟机( PVE )
两台的用户分别是
dockermachine
> id
uid=1000(ubuntuuser) gid=1000(ubuntuuser) groups=1000(ubuntuuser),27(sudo),999(docker)
dsm
> id
uid=1026(dsmuser) gid=100(users) groups=100(users),101(administrators)
docker-compose.yml
version: "3.2"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- type: volume
source: nfs
target: /config
volume:
nocopy: true
ports:
- 80:80
- 443:443
restart: unless-stopped
volumes:
nfs:
driver_opts:
type: "nfs"
o: "addr=dsmip,nolock,soft,rw,nfsvers=4"
device: ":/pathtoheimdall"
heimdall 报权限不对, 请问 docker 使用 nfs/smb volume 时权限怎么处理
1
ksc010 2023-02-12 19:14:07 +08:00
你把 nfs 上的文件夹挂在到 docker 下,文件的 owner uid 是不变的,
所以你需要看下 容器中应用的那个用户启动的程序,并且它的 uid 是多少,然后看下 nsf 上文件的 uid 是多少,要一致,这样就可以了 |
2
piku 2023-02-12 19:43:50 +08:00 via Android
1.群晖开 NFS 授权给容器主机,容器主机挂 NFS ,目录映射给容器。这种情况下目录权限由群晖决定,容器改不了文件权限(可能会出警告)但读写都正常。
2. smb 就麻烦了,群晖端既要设目录权限也要设 ACL 权限(也可能没开 ACL 功能)。容器可以直接挂 smb 给目录,也可以把 smb 挂到容器主机再映射给容器目录。这种情况下需要注意挂载时指定权限( mount -o )。 大部分情形下不需要留意用户权限,这种挂载的情况给 777 即可。不能给 777 的情况下还需要考虑用户映射 |
3
julyclyde 2023-02-13 09:16:28 +08:00
nfs 其实没有授权,只是接受对应的 uid 和 mode
所以服务器端要求客户端的 IP 、客户端要求 root 才能 mount |