![如何在 docker 中挂载卷以使文件不属于 root 所有?](https://linux22.com/image/792201/%E5%A6%82%E4%BD%95%E5%9C%A8%20docker%20%E4%B8%AD%E6%8C%82%E8%BD%BD%E5%8D%B7%E4%BB%A5%E4%BD%BF%E6%96%87%E4%BB%B6%E4%B8%8D%E5%B1%9E%E4%BA%8E%20root%20%E6%89%80%E6%9C%89%EF%BC%9F.png)
我的 Linux 计算机(Ubuntu 23.10)上有一个名为的目录:
/home/steve/foobar/foo
该目录及其中的所有文件均归用户 steve (uid 1000) 和组 steve (gid 1000) 所有。
我想将其作为 /host/foo 挂载到 docker 中
无论我怎么尝试,docker 中的所有文件最终都归 root 和组 root 所有。我希望它们归用户 steve 和组 steve 所有。
这是compose.yaml:
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile
这是我的 testapp.dockerfile
FROM ubuntu:jammy
ARG UID=1000
RUN adduser \
--disabled-password \
--gecos "" \
--home "/home/steve" \
--shell "/bin/bash" \
--uid "${UID}" \
steve
RUN mkdir -p /host/foo
RUN chown steve: /host
RUN chown steve: /host/foo
USER steve
VOLUME /host/foo
为了构建我所做的:
docker compose build
要运行我这样做:
docker compose run
为了在 docker 中获取命令行,我执行以下操作:
docker exec -it pytest1 /bin/bash
我必须做哪些具体的更改才能使 /host/foo 下的所有文件都归 steve 和 steve 组所有?
谢谢。
(如果有关系的话我也在运行docker桌面)。
答案1
您需要将以下内容添加到您的docker-compose中
user: "1000:1000"
所以你的情况
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
user: "1000:1000"
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile