【问题标题】:docker ADD --chown bug or feature?docker ADD --chown 错误或功能?
【发布时间】:2023-04-04 05:25:01
【问题描述】:

我在通过--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 会自动提取焦油。我不知道在文件是 tar 文件的情况下如何设置所有权。有人吗?

【问题讨论】:

  • 您可能知道添加一个RUN 命令只是为了设置所有权将创建一个新的(相对较大的)层来执行该命令。这很好。但是鉴于ADD 命令有一个--chown 标志,无论输入类型如何,人们都希望该标志与ADD 一起使用。现在我在 docker 之外提取 tar 文件,然后我使用带有 --chown 标志的 docker COPY

标签: docker ownership


【解决方案1】:

很遗憾,ADD --chown 仅适用于常规文件。带有 tarball 的 ADD 使用 tarball 中列出的所有权和权限。

解决方法:

  • --owner/--owner-map/--group/--group-map自己运行tar
  • chown -RADD 之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2017-12-07
    • 2012-02-22
    相关资源
    最近更新 更多