Dockerfile(4) - RUN 指令详解

RUN

运行命令

shell 形式

  • 命令在 shell 中运行

  • Linux 上默认为 /bin/sh -c

  • Windows 上 cmd /S /C

    RUN <command>

exec 形式

复制代码
RUN ["executable", "param1", "param2"] 

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

两种写法的实际栗子

python 复制代码
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 指令延续到下一行,等于执行了两个命令

python 复制代码
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'

exec 模式下使用环境变量

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

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
逻辑驱动的ken几秒前
Java高频面试考点场景题15
java·开发语言·深度学习·面试·职场和发展·高效学习
川石课堂软件测试2 分钟前
AI如何赋能软件测试行业的发展
人工智能·python·功能测试·网络协议·单元测试·测试用例·prometheus
汽车仪器仪表相关领域33 分钟前
Kvaser Memorator Pro 2xHS v2:双通道CAN FD智能记录仪,赋能华南汽车与工业总线测试升级
大数据·人工智能·功能测试·安全·汽车·压力测试·可用性测试
嘻嘻哈哈樱桃34 分钟前
牛客经典101题题解集--哈希
java·数据结构·python·算法·leetcode·职场和发展·哈希算法
Brilliantwxx44 分钟前
【算法题】日期类算法题
开发语言·c++·笔记·程序人生·算法
穿条秋裤到处跑1 小时前
每日一道leetcode(2026.04.27):检查网格中是否存在有效路径
算法·leetcode·职场和发展
yuezhilangniao1 小时前
云原生万物皆可比喻-个别例子不恰当-隐含IT发展史
程序人生·云原生
半夜起来敲代码2 小时前
编程语言与跨平台
程序人生
檀越剑指大厂10 小时前
32 万星的面试学习计划 + 内网穿透工具,程序员面试准备效率翻倍!
学习·面试·职场和发展
中仕公考10 小时前
中仕公考:事业编有试用期吗?
职场和发展