为dockerfile中的将来RUN命令修复umask

bjo*_*nen 3 docker dockerfile

我想在剩余的dockerfile中为我的所有RUN命令修复某个umask。而不是写这个

RUN umask 0002 && do_something
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情

RUN echo umask 0002 >> some_file
RUN do_something
...
Run Code Online (Sandbox Code Playgroud)

我尝试过root以各种方式设置umask,但是它们似乎都对以下RUN命令无效。有任何想法吗?

Mat*_*att 5

Docker不会RUN像完整的登录Shell那样初始化每个步骤,而是创建了一个非常小的环境。

启动容器时,runc将umask 设置为0022,这也是不可配置的

因此,像大多数Docker构建一样,您可能需要将命令链接到一个RUN步骤中,以便所有这些操作都在同一Shell进程下进行。

RUN set -uex; \
    umask 0002; \
    do_something; \
    do_otherthing;
Run Code Online (Sandbox Code Playgroud)

否则,您将需要在每个RUN步骤中进行某种类型的初始化。