Emi*_*l H 5 file-permissions file docker
我想为我添加到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/
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
请注意,尽管在dir 上设置了setgid位,但该文件foo不属于组.我可以在添加文件后使用,但是要创建要创建的图层的副本(请注意下面两层的大小):baz/appRUN 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
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题并且添加文件的所有权是我想要的?
foo您可以将其打包为 tar 存档并为特定 UID/GID 设置权限,而不是直接添加。这是有关如何执行此操作的帖子:
https://unix.stackexchange.com/questions/61004/force-the-owner-and-group-for-the-contents-of-a-tar-file
之后,您可以在 Docker 映像中解压它(ADD自动解压)。您应该会看到在没有附加层的情况下保留的权限。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |