一 命令说明
格式为下来两种
RUN (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
RUN ["executable", "param1", "param2"] (exec form)
前者将在shell终端中运行,即/bin/sh -c;后者则使用exec执行。
指定使用其他终端可以通过第二种形式,例如RUN ["/bin/bash","-c","echo hello"]。
每条RUN指定将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时,可以使用\来换行。
1 exec形式会作为json数组进行解析,需要符号"而不是'
2 shell形式,环境变量会起作用(解释环境变量)
3 exec的shell执行,环境变量起作用
4 其他遵循exec shell形式的指令依然遵循。
二 解释
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'
功能同下边
RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'
选不同的shell
RUN ["/bin/bash", "-c", "echo hello"]
exec 格式是json 所以用"符号 不要使用单引号'
RUN [ "echo", "$HOME" ] #shell不执行,HOME不被替换
RUN [ "sh", "-c", "echo $HOME" ]
#RUN ["c:\windows\system32\tasklist.exe"] 转义
["c:\\windows\\system32\\tasklist.exe"]
#缓存起作用,禁用缓存docker build --no-cache
RUN apt-get dist-upgrade -y