RUN
RUN指令在当前镜像上执行操作,然后将提交结果为新的镜像,作用于Dockerfile的下一步
语法
RUN指令有2种格式:
RUN <command>(shell形式,命令运行在一个shell上。对Linux而言,默认是/bin/sh -c;对Windows而言,默认是cmd /S /C)RUN ["executable", "param1", "param2"](exec形式)
注意一:使用shell形式,可以使用反斜线(\, backslash)将单行RUN指令扩展成多行,有助于配置和理解
RUN apt-get update && \
apt-get install -f \
apt-get install -y net-tools
注意二:exec形式必须使用双引号而不是单引号
注意三:exec形式的RUN指令不会调用命令shell,必须显式调用shell
RUN ["sh", "-c", "echo hello"]
对于Windows系统而言,需要转义反斜杠,比如RUN ["c:\\windows\\system32\\tasklist.exe"]
缓存
RUN指令的缓存不会在下一个生成期间自动失效,所以RUN apt-get dist-upgrade -y的缓存将在下次构建时使用
设置缓存内容失效,需要在构建时设置标识符--no-cache,比如docker build --no-cache .
不同shell
如果要使用不同shell,操作如下:
- 使用绝对路径指定新的
shell - 使用
SHELL指令更新
RUN ["/bin/bash", "-c", "echo hello"]