Dockerfile(4) - RUN 指令详解

简介: 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" ]

 

 


相关文章
|
NoSQL 关系型数据库 MySQL
Dockerfile(9) - ENTRYPOINT 指令详解
Dockerfile(9) - ENTRYPOINT 指令详解
835 0
|
2月前
|
JSON Java Shell
Dockerfile中RUN、CMD、ENTRYPOINT、SHELL命令的区别
理解这些指令的差异和应用场景,有助于构建高效、灵活且易于管理的Docker镜像。在实际应用中,根据需要选择合适的指令,可以有效地控制镜像构建和容器运行的行为。
228 0
|
4月前
|
监控 Linux API
在Docker中,docker run指令执行后,生成了哪些进程?
在Docker中,docker run指令执行后,生成了哪些进程?
|
7月前
|
JSON 物联网 Shell
Dockerfile指令详解
Dockerfile指令详解
136 0
Dockerfile(3) - WORKDIR 指令详解
Dockerfile(3) - WORKDIR 指令详解
1059 0
|
Docker 容器
48-Dockerfile-CMD/ENTRYPOINT指令
48-Dockerfile-CMD/ENTRYPOINT指令
|
Shell 开发工具 git
43-Dockerfile-FROM/LABEL/RUN指令
43-Dockerfile-FROM/LABEL/RUN指令
|
Docker 容器
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
本文是博主学习docker 制作镜像指令的记录,希望对大家有所帮助
199 0
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
|
缓存 Linux Go
Dockerfile(10) - ADD 指令详解
Dockerfile(10) - ADD 指令详解
2402 0
Dockerfile(1) - FROM 指令详解
Dockerfile(1) - FROM 指令详解
609 0