【问题标题】:How to make docker COPY ignore file permissions?如何让 docker COPY 忽略文件权限?
【发布时间】:2020-10-23 12:03:14
【问题描述】:

我正在从注册表中提取一个 docker 映像,我想将其用作缓存,在本地运行 docker build --cache-from MY_IMAGE .。它使用大小写直到层COPY requirements.txt ${SOME_DIR}。我怀疑问题在于 docker 查看文件权限,而不仅仅是文件内容。有什么办法让它忽略文件权限?

提前致谢! :)

PS 我可以使用 RUN、HEREDOC 和管道来避免使用 COPY,但它看起来真的很糟糕。

问候

【问题讨论】:

  • 您在构建命令期间看到了什么错误?我是你运行docker build的同一个目录,显示ls -l requirements.txt的输出
  • 请发布您收到的完整错误消息。

标签: docker caching permissions


【解决方案1】:

再次阅读问题后,我想缓存失效是这里的问题 - COPY 命令在某些更改时使缓存失效,权限是元信息的一部分,包含在此计算中。

注意权限,因为hashing is used to detect changes。对此有相关问题:Why does my Docker cache get invalidated by this COPY command?

没有办法解决这个问题 - 如果您的文件权限根据上游注册表映像不同,请在最后一点使用 COPY 命令。

复制操作过程中的权限本身不是从源派生的,而是默认“所有新文件和目录都是用0的UID和GID创建的”,基于官方docs.

但是,您可以在使用 COPY 命令时更改所有者。

您可以使用--chown 参数、user:group 语法,或使用UID:GID 值。

请注意,这仅适用于基于 Linux 的容器。 在 Windows 机器上使用了不同的权限概念,并且无法使用 /etc/groups/etc/passwd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2016-11-13
    • 2021-08-26
    • 2018-05-12
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多