gpt4 book ai didi

docker - 在 Docker 中将 "named volume"挂载为非 root

转载 作者:IT老高 更新时间:2023-10-28 21:23:49 25 4
gpt4 key购买 nike

有没有办法以非 root 用户身份挂载命名卷?我试图避免必须在每个 Dockerfile 中运行 chown 但我需要挂载可由非 root 用户写入才能写入镜像中构建创建的工件

这就是我正在尝试的

docker run --rm -it -v /home/bob/dev/:/src/dev -v builds:/mnt/build --name build hilikus/build /bin/bash

但是对于第二个坐骑,我得到了

[user@42f237282128 ~]$ ll /mnt
total 4
drwxr-xr-x 2 root root 4096 Sep 18 19:29 build

我的另一个挂载 (/src/dev/) 由 user 拥有,而不是由 root 拥有,因此它可以满足我的需求;但是,我无法对命名卷执行相同的操作。

最佳答案

命名卷在该位置初始化为您的镜像内容,因此您需要在 Dockerfile 中设置权限:

$ cat df.vf-uid
FROM busybox
RUN mkdir -p /data && echo "hello world" > /data/hello && chown -R 1000 /data

$ docker build -t test-vf -f df.vf-uid .
Sending build context to Docker daemon 23.06 MB
Step 1 : FROM busybox
---> 2b8fd9751c4c
Step 2 : RUN mkdir -p /data && echo "hello world" > /data/hello && chown -R 1000 /data
---> Using cache
---> 41390b132940
Successfully built 41390b132940

$ docker run -v test-vol:/data --rm -it test-vf ls -alR /data
/data:
total 12
drwxr-xr-x 2 1000 root 4096 Sep 19 15:26 .
drwxr-xr-x 19 root root 4096 Sep 19 15:26 ..
-rw-r--r-- 1 1000 root 12 Aug 22 11:43 hello

关于docker - 在 Docker 中将 "named volume"挂载为非 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com