docker ADD --chown 错误或功能?

标签 docker ownership

我在向图像添加文件并通过 --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 。我不知道在文件是 tar 文件的情况下如何设置所有权。任何人?

最佳答案

不幸的是,ADD --chown仅适用于常规文件。 ADD使用 tarball 使用 tarball 中列出的所有权和权限。

解决方法:

  • 运行 tar自己与 --owner/--owner-map/--group/--group-map .
  • chown -RADD .
  • 关于docker ADD --chown 错误或功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58493520/

    相关文章:

    linux - qemu 臂 qemu : uncaught target signal 11 (Segmentation fault) - core dumped

    c# - Google Drive SDK 为用户创建文件

    regex - 使用正则表达式结果的最佳模式是什么?

    php - 创建文件的文件所有权

    docker - GitLab CI使用Docker审查环境

    windows - 在 Windows 上安装 Docker 后无法启动我的虚拟 Box 机

    docker - 在 Azure Kubernetes 中托管的 FTP 服务器

    c++ - 复制构造函数以转移 unique_ptr 的所有权

    collections - 为什么借用的 HashMap 的键和值是通过引用访问的,而不是值?

    docker - NVIDIA Jetson Nano上的Google AutoML Vision导出模型