【问题标题】:Docker `error from sender` for read only root file用于只读根文件的 Docker `来自发件人的错误`
【发布时间】:2021-12-18 07:44:07
【问题描述】:

我项目中的一个文件夹是只读的:

ls -la client/cypress
drwxr-xr-x  10 user    staff   320 Nov  2 18:06 .
drwx------   2 root    staff    64 Nov  2 17:58 resource  <--- this one

我在基目录(上下文)的.dockerignore 中忽略了它

client/cypress/resource

简单的码头工人定义:

WORKDIR /src
COPY client/ client
CMD ["/bin/bash"]

$ docker build . 失败:
error from sender: open client/cypress/resource: permission denied

以 sudo 运行,但为什么 docker 不忽略该文件?如果我忽略包含该文件夹的目录,它工作正常。 (我知道我可以 chmod 文件,但它是由其他工具以编程方式生成的)

【问题讨论】:

    标签: docker dockerignore


    【解决方案1】:

    resource 文件夹的所有权为root:staff,权限为700。这意味着只有 root 用户能够读取/写入/执行该文件夹。 staff 组对该文件夹没有任何权限。

    使用 sudo 运行将起作用,因为 sudo 使用 root 用户执行命令。

    关于 .dockerignore 文件:这取决于 .dockerignore 文件的权限。如果所有权是 root:staff 并且权限是 640 或者更具限制性,那么如果您执行 docker build 。作为普通用户,该用户无法读取 .dockerignore 文件。

    话虽如此,不读取 .dockerignore 文件意味着忽略该文件及其内容。

    【讨论】:

    • dockerfile可以读取,权限正常
    • 如你所说,由于没有提供其他信息,我真的不知道那里发生了什么,所以我实际上无法提供更好的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 2018-08-11
    • 2017-03-21
    相关资源
    最近更新 更多