前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Dockerfile(4) - RUN 指令详解

Dockerfile(4) - RUN 指令详解

作者头像
小菠萝测试笔记
发布2021-11-02 15:59:48
发布2021-11-02 15:59:48
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

RUN

运行命令

shell 形式
  • 命令在 shell 中运行
  • Linux 上默认为 /bin/sh -c
  • Windows 上 cmd /S /C
代码语言:javascript
代码运行次数:0
复制
RUN <command>
exec 形式
代码语言:javascript
代码运行次数:0
复制
RUN ["executable", "param1", "param2"] 

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

两种写法的实际栗子

代码语言:javascript
代码运行次数:0
复制
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 指令延续到下一行,等于执行了两个命令

代码语言:javascript
代码运行次数:0
复制
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'

exec 模式下使用环境变量

代码语言:javascript
代码运行次数:0
复制
# 错误写法,不会使用 HOME 环境变量
RUN [ "echo", "$HOME" ]

# 正确写法,需要将 echo 和使用环境变量放一起
RUN [ "sh", "-c", "echo $HOME" ]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RUN
    • shell 形式
    • exec 形式
  • 两种写法的实际栗子
  • RUN 指令的原理
  • shell 模式下使用 \
  • exec 模式下使用环境变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档