如何在 docker 中挂载卷以使文件不属于 root 所有?

如何在 docker 中挂载卷以使文件不属于 root 所有?

我的 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

相关内容