docker 添加 --chown 错误或功能?
docker ADD --chown bug or feature?
我在向图像添加文件并通过 --chown
标志设置所有权时遇到问题。具体来说,这是一个添加简单文本文件的 dockerfile:
FROM fedora:24
ARG user_name=slave
ARG user_uid=1000
ARG user_home=/home/$user_name/
RUN useradd -l -u ${user_uid} -ms /bin/bash $user_name
WORKDIR ${user_home}
USER ${user_name}
ADD --chown=1397765041:1397765041 test.txt ./
CMD ls -l
这会导致 text.txt
的预期所有权,如下所示:
$ docker run --rm -it bm/tmp:latest
total 4
-rw-r--r-- 1 some_user 1397765041 6 Oct 21 20:00 test.txt
酷。现在,如果我将 test.txt
更改为 tar 文件(例如 boost_1_57_0.tar.bz2),然后重建,这就是我得到的:
$ docker run --rm -it bm/tmp:latest
total 4
drwx------ 8 501 root 4096 Oct 31 2014 boost_1_57_0
这是我的构建方式(可能无关紧要):
docker build -t bm/tmp --build-arg user_name=some_user --build-arg user_uid=1397765041 .
如我们所见,在这种情况下所有权与预期不符。 --chown
的行为似乎与上面显示的两种情况不同。我知道 ADD
会自动提取 tars。我不知道在文件是 tar 文件的情况下如何设置所有权。有人吗?
遗憾的是,ADD --chown
仅适用于常规文件。 ADD
使用 tarball 使用 tarball 中列出的所有权和权限。
解决方法:
- 运行
tar
自己和--owner
/--owner-map
/--group
/--group-map
.
chown -R
在 ADD
. 之后
我在向图像添加文件并通过 --chown
标志设置所有权时遇到问题。具体来说,这是一个添加简单文本文件的 dockerfile:
FROM fedora:24
ARG user_name=slave
ARG user_uid=1000
ARG user_home=/home/$user_name/
RUN useradd -l -u ${user_uid} -ms /bin/bash $user_name
WORKDIR ${user_home}
USER ${user_name}
ADD --chown=1397765041:1397765041 test.txt ./
CMD ls -l
这会导致 text.txt
的预期所有权,如下所示:
$ docker run --rm -it bm/tmp:latest
total 4
-rw-r--r-- 1 some_user 1397765041 6 Oct 21 20:00 test.txt
酷。现在,如果我将 test.txt
更改为 tar 文件(例如 boost_1_57_0.tar.bz2),然后重建,这就是我得到的:
$ docker run --rm -it bm/tmp:latest
total 4
drwx------ 8 501 root 4096 Oct 31 2014 boost_1_57_0
这是我的构建方式(可能无关紧要):
docker build -t bm/tmp --build-arg user_name=some_user --build-arg user_uid=1397765041 .
如我们所见,在这种情况下所有权与预期不符。 --chown
的行为似乎与上面显示的两种情况不同。我知道 ADD
会自动提取 tars。我不知道在文件是 tar 文件的情况下如何设置所有权。有人吗?
遗憾的是,ADD --chown
仅适用于常规文件。 ADD
使用 tarball 使用 tarball 中列出的所有权和权限。
解决方法:
- 运行
tar
自己和--owner
/--owner-map
/--group
/--group-map
. chown -R
在ADD
. 之后