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" ]
标签:
Dockerfile
, Docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!