RUN

参考: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"]