RUN
RUN命令
RUN有两种形式:shell形式和exec形式。
- RUN commands: shell形式,默认Linux操作系统在/bin/sh -c中执行;windows系统在cmd /S /C中执行
- RUN [“executable”,”param1”,”param2”]: exec形式
RUN说明
RUN指令将基于当前镜像在一个新的镜像层中执行commands,执行完毕会执行commit结果,产生一个新的镜像,然后新的镜像作为Dockerfile中下一条命令的基础层。
将RUN指令层次化符合Docker的核心原则:commits非常轻便,并且可以从image history中的任何点创建容器。
EXEC形式的RUN指令可以在不含shell中的base image中执行。
EXEC形式的RUN指令不会调用shell,所以也不会执行shell中的变量替换。如果一定要用,可以如下进行:
RUN ["sh", "-c", "echo $HOME"]
RUN指令的cache在下一次build时不会自动失效。比如指令RUN apt-get dist-upgrade -y的cache可以在下一次build时服用。 可以使用–no-cache清除缓存:docker build –no-cache