权限被拒绝在 docker 中以非 root 身份创建目录

permission denied creating directories as non-root in docker

我有一个非 root 用户必须 运行 的脚本。该脚本还创建目录和文件。如果我 运行 在 docker 中以非 root 用户身份运行脚本,我会收到创建目录时的权限被拒绝错误。我试图更改脚本所在的父目录,但它不起作用。这里的最佳做法应该是什么?

RUN mkdir test
WORKDIR /test
USER testuser
RUN mkdir .cache     <--- permission denied

发生这种情况是因为您的 /test 目录是由 root 创建的,默认情况下不允许任何其他用户在其中创建任何内容。要将所有权更改为您想要的用户,您可以在 USER testuser 步骤之前使用 chown

RUN chown testuser /test

如果目录中已有文件,则需要传递-R标志递归更改权限:

RUN chown -R testuser /test

另一种选择是为所有用户授予目录红色+写入+执行权限。然而,这可能不是您想要的,以上内容应该适用于几乎所有情况。

RUN chmod 777 /test