Ale*_*lex 9 permissions mount docker
我在 docker 容器中从主机挂载目录时遇到问题:
这是一个全栈情况:我正在使用服务堆栈来使文件在本地 LAN 上可用。该堆栈使用 nginx:alpine,图像可用 - 所以我无法轻松修改 Dockerimage。
有什么办法可以让 Alpine Linux 映像内的 xfs 无法获取用户和组 ID 33?
我尝试在 中设置 PUID 和 PGID docker-compose.yml,但它不起作用(我也很难理解这一点):
services:
celeryworker:
environment:
- PUID=33
- PGID=33
Run Code Online (Sandbox Code Playgroud)
最小可重现示例:
主机上的文件:services:
celeryworker:
environment:
- PUID=33
- PGID=33
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
cd /mnt/nfs/folder1
ls -alh
>-rwxr-xr-x 1 www-data www-data 3.5M Sep 21 15:41 '02 - track.mp3'
ls -alhn
>-rwxr-xr-x 1 33 33 3.5M Sep 21 15:41 '02 - track.mp3'
less /etc/passwd | grep www-data
>www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
容器中的文件:
version: "3"
services:
celeryworker:
restart: unless-stopped
image: funkwhale/funkwhale:1.0.1
networks:
- default
depends_on:
- postgres
- redis
command: celery -A funkwhale_api.taskapp worker -l INFO --concurrency=0
environment:
- C_FORCE_ROOT=true
volumes:
- "/mnt/nfs/:/music:ro"
Run Code Online (Sandbox Code Playgroud)
Ric*_*dos 11
回复晚了,但也许它可以帮助其他人.. Debian/Ubuntu 中的 UID:GIDwww-data与 Alpine 中的 ID 不匹配:
| 用户:组 | Debian/Ubuntu (uid:gid) | 阿尔卑斯 (uid:gid) |
|---|---|---|
| www 数据 : www 数据 | 33:33 | 82:82 |
| xfs:xfs | - | 33:33 |
如果您的主机文件夹属于www-data:www-data( 33:33),那么在 Alpine 容器内,此 uid:gid 将与 的 uid:gid 匹配,xfs:xfs并且您将遇到权限问题。
要解决此问题,您可以将主机中的所有权更改为 82:82:
$ sudo chown -R 82:82 host_directory
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5234 次 |
| 最近记录: |