RUN指令将执行当前镜像顶部新的一层的任何命令并提交结果。 生成的提交镜像将用于Dockerfile中的下一步。

语法形式:

  1、RUN <command>

  2、RUN ["executable", "param1", "param2"]

RUN指令分层和生成提交符合docker提交简单以及可以在镜像历史中的任何一点创建容器的核心观念,类似于代码控制

对于exec方式的RUN指令,可以使用不包含指定shell可执行文件的基本镜像中执行RUN命令

RUN支持多行:

  RUN /bin/bash -c 'source $HOME/.bashrc; \

  echo $HOME'

可以使用exec形式调用不同于/bin/sh的shell(注:exec形式的指令是以json数组方式解析的、所以必须使用双引号)

  RUN ["/bin/bash", "-c", "echo hello”]

NOTE: exec方式在不指定的情况下不会调用shell、这意味着正常的shell处理不会发生,比如:使用 RUN ["echo", "$HOME"]时,$HOME不会被替换,如果要达到shell处理的效果,

应该使用  RUN [ "sh", "-c", "echo $HOME" ] 的方式

另外,反斜线需要转义

RUN指令的cache在下一次构建时不会被自动清理掉,也就是说可以在下一步进行重用,可以通过 docker build -no-cache使其缓存失效