【发布时间】:2021-06-05 00:01:41
【问题描述】:
我在 docker 容器中从我的主机安装目录时遇到问题:
- Alpine Linux includes user xfs (33) and group xfs (33), with no www-data
- 主机上的文件归 www-data (33) 所有
- 我需要 nginx:alpine docker 映像中的 nginx 可以访问这些文件
这是一个全栈情况:我正在使用服务栈使文件在本地局域网上可用。 堆栈使用 nginx:alpine,图像可用 - 所以我不能轻易修改 Dockerimage。
我有什么办法可以使 Alpine Linux 映像中的 xfs 无法获取用户和组 id 33?
我尝试在docker-compose.yml中设置PUID和PGID,
但它不起作用(我也很难理解):
services:
celeryworker:
environment:
- PUID=33
- PGID=33
最小可重现示例:
主机上的文件: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
码头工人-compose.yml
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"
容器中的文件:
docker exec -it funkwhale_celeryworker_1 /bin/bash
cd /music/folder1/
ls -alh
>-rwxr-xr-x 1 xfs xfs 3.4M Sep 21 13:41 '02 - track1.mp3'
ls -alhn
>-rwxr-xr-x 1 33 33 3.4M Sep 21 13:41 '02 - track1.mp3'
su xfs
>This account is not available
less /etc/passwd | grep xfs
>xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
【问题讨论】:
-
你能提供一个minimal reproducible example吗? uid 33 拥有的文件是否存在特定问题?它们在主机上是世界可读的吗? (如果您将文件绑定挂载到容器中,它们通常会在主机和容器上下文中保持相同的 numeric 用户和组所有者以及其他属性。)
-
道歉,你说得对,我更新了我原来的帖子。
-
啊,这是我的错误:
folder1不是世界可读的!一旦我使用了 chmod 755 folder1,就在容器内授予了权限,即使对于用户 xfs 也是如此。
标签: docker permissions mount