Dockerfile(4) - RUN 指令详解

RUN

运行命令

shell 形式

  • 命令在 shell 中运行
  • Linux 上默认为 /bin/sh -c
  •  Windows 上 cmd /S /C
RUN <command>

 

exec 形式

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

必须双引号,不能是单引号

 

两种写法的实际栗子

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

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

 

RUN 指令的原理

  • RUN 指令将在当前镜像上加的一层,并执行任何命令和提交结果,生成的提交镜像将用于 Dockfile 中的后续步骤
  • 分层 RUN 指令和生成提交符合 Docker 核心概念,提交成本低,并且可以通过 docker history 中的任意步骤创建容器,像 git 代码控制一样

 

shell 模式下使用 \

可以将单个 RUN 指令延续到下一行,等于执行了两个命令

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

 

exec 模式下使用环境变量

# 错误写法,不会使用 HOME 环境变量
RUN [ "echo", "$HOME" ]

# 正确写法,需要将 echo 和使用环境变量放一起
RUN [ "sh", "-c", "echo $HOME" ]

 

 
posted @ 2021-10-31 14:51  小菠萝测试笔记  阅读(820)  评论(0编辑  收藏  举报