gpt4 book ai didi

构建 docker 镜像的文件所有权

转载 作者:行者123 更新时间:2023-12-04 19:55:04 29 4
gpt4 key购买 nike

我想为添加到 docker 镜像的文件设置文件权限。我有这个简单的 Dockerfile:

FROM ubuntu:utopic

WORKDIR /app
RUN groupadd -g 1000 baz && useradd -u 1000 -g baz baz -d /app -s /bin/false
RUN chown baz:baz /app && chmod g+s /app
# want this to be have group baz
ADD foo /app/

docker build -t abc . 构建这个哪里有 foo文件在 .创建图像。但是,对 /app/foo 的权限里面不是我想要的。
docker run abc ls -la     
total 12
drwxr-xr-x 2 baz baz 4096 Sep 2 23:21 .
drwxr-xr-x 37 root root 4096 Sep 3 07:27 ..
-rw-rw-r-- 1 root root 419 Sep 2 21:43 foo

请注意文件 foo不属于组 baz尽管 the setgid bit正在设置 /app目录我可以用 RUN chown -R baz:baz /app添加文件后,但会创建要创建的图层的副本(请注意下面两个图层的大小):
docker history abc | head -n 3
IMAGE CREATED CREATED BY SIZE COMMENT
b95a3d798873 About a minute ago /bin/sh -c chown -R baz:baz /app 419 B
7e007196c116 About a minute ago /bin/sh -c #(nop) ADD file:2b91d9890a9c392390 419 B

有什么方法可以解决这个问题,并添加文件的所有权是我想要的吗?

最佳答案

而不是添加 foo直接,您可以将其打包为 tar-archive 并为特定的 UID/GID 设置权限。这是一篇关于如何做到这一点的帖子:
https://unix.stackexchange.com/questions/61004/force-the-owner-and-group-for-the-contents-of-a-tar-file

之后,您可以在 Docker 镜像中解压它( ADD 自动解压)。您应该会看到保留的权限,而无需额外的图层。

关于构建 docker 镜像的文件所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32363708/

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