Docker 之 RUN

2023-11-01

参考:https://docs.docker.com/engine/reference/builder/#run

RUN 有两种形式

  • RUN <command>  (shell form,命令在shell中运行,默认为Linux上的 /bin/sh -c 或 Windows上的 cmd /S /C)
  • RUN ["executable", "param1", "param2"] (exec form)

RUN指令将在当前image之上的新层中执行任何命令并提交结果。生成的提交图像将用于Dockerfile中的下一步.

分层RUN 指令和生成提交符合Docker的核心概念,其中提交很便宜,可以从映像历史中的任何点创建容器,很像源代码控制。

exec form 可以避免使用shell字符串,并使用不包含指定的shell可执行文件的基本映像运行命令。

可以使用shell命令更改shell窗体的默认shell。

shell form中,您可以使用\(反斜杠)将单个运行指令延续到下一行。例如,考虑这两行:

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

它们合起来等于这一行:

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

注意:要使用不同于' /bin/sh '的shell,请使用传入所需shell的exec form 。例如

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

注意:exec form 被解析为JSON数组,这意味着必须在单词周围使用双引号("),而不是单引号(')。

注意:与shell form不同,exec form 不调用命令shell。这意味着不会发生正常的shell处理。例如,RUN ["echo", "$HOME"]不会对$HOME执行变量替换。如果您想要shell处理,那么要么使用shell表单,要么直接执行shell,例如:运行["sh", "-c", "echo $HOME"]。当使用exec form 并直接执行shell时(如shell form 的情况),执行环境变量扩展的是shell,而不是docker.

注意:在JSON格式中,必须转义反斜杠。这在以反斜杠为路径分隔符的窗口中特别相关。下面这行代码由于不是有效的JSON,将被视为shell表单,并以一种意外的方式失败:运行["c:\windows\system32\tasklist。本例的正确语法是:RUN ["c:\\windows\\system32\\tasklist.exe"]

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 之 RUN 的相关文章

  • 小记初学android过程中遇到的小问题(android 4.4)

    在layout文件中有下面这样一个编辑框
  • List> 转 Map>

    将List转成Map结构 以下为没有水平的写法 好久之前写的土方法转换 不知道有没有优秀的解法 还希望大家提供 Map
  • 吸尘器电机拆解图解_家庭打扫全能选手-美的无线吸尘器P2G

    最近美的推出了一款轻便式家用吸尘器 一改吸尘器在心中笨大重托的形象 但具体清洁效果与实际体验如何呢 现在就让我们全方位探究一下这台美的无线吸尘器P2G 部件及功能介绍 包装小巧到我惊掉下巴 这真的就可以组装成一台吸尘器吗 打开包装 有序排列
  • JAVA多态(超详细讲解)

    目录 多态的基本介绍 实现多态的条件 1 继承 必须要有子类继承父类的继承关系 2 重写 子类需要对父类中的一些方法进行重写 然后调用方法时就会调用子类重写的方法而不是原本父类的方法 3 向上转型 在多态中需要将子类的引用赋给父类对象 只有
  • Windows下搭建nginx和rtspToWebRTC以及Windows程序添加为服务开机启动和后台运行

    1 前言 之前的rtsp转webrtc的服务很好用 https blog csdn net weixin 39510813 article details 123718363 spm 1001 2014 3001 5502 测试使用效果都很
  • Axios 企业级3封装以及常见的get和post请求写法

    简洁用法 发送get请求 第一种 适合少量参数 axios get api url 参数名1 参数值1 参数2 参数值2 then res gt res data就是后端响应的数据 catch err gt err就是错误信息 请求挂掉了
  • expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘struct’

    这篇准备长期更新 1 在编译时遇到错误 错误 expected asm or attribute before struct src cli socket handle c 在函数 client login 中 这种错误第一次遇到肯定很懵逼
  • iptables的基本使用

    iptables 防火墙 防火墙的分类 Netfilter 链的概念 表的概念 表链的关系 iptables规则的匹配 iptables 的命令 查询规则 添加规则 删除规则 修改规则 保存规则 iptables的扩展模块 Tcp模块 mu
  • 基于Java设计和实现系统的自动化巡检

    系统巡检对于系统管理员并不陌生 日常工作是离不开它的 笔者记得进入运维岗位的第一天 学习的第一课就是如何系统巡检 首先远程登陆各服务器 然后通过执行命令或操作页面查看系统内存 CPU和磁盘利用率等情况 最后将相应的数值填写入系检表格 看似几
  • 新一代视频压缩编码标准-----H.264/AVC

    2 数字视频 2 1 2 数字电视PCM原理 将输入的模拟信号转化为输出的数字电视信号 经过取样 量化 编码三个步骤 由A D变换器完成 2 1 2 1 取样 在时间轴上将连续变化的模拟信号 转化为离散量 2 1 2 2 量化 因取样后的脉

随机推荐

  • 服务中不存在mysql 或者没有启动成功

    服务器中不存在mysql mysql admin V 查看mysql环境的配置是否成功 成功则执行services msc 去服务中查找mysql服务 如果有则设置自动启动 或者 执行net start mysql 黑窗口开启服务 如果没有
  • 【AI面试】RoI Pooling 和 RoI Align 辨析

    RoI Pooling和RoI Align是两种常用的目标检测中的RoI特征提取方法 它们的主要区别在于 如何将不同大小的RoI对齐到固定大小的特征图上 并在这个过程中保留更多的空间信息 如果你是做目标检测相关的项目 那么这个问题肯定是跑不
  • 嵌入式单元测试框架之Ceedling

    Ceedling Ceedling 是一个用 Ruby 语言编写的自动化测试框架 一个 C 项目构建系统 是对 Ruby Rake 的一个延申 Ceedling 主要目标是以测试为驱动的 C 语言开发 集成CMock Unity CExce
  • 【算法】中序与后序遍历序列构造二叉树(二叉树、递归)

    106 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树 注意 你可以假设树中没有重复的元素 例如 给出中序遍历 inorder 9 3 15 20 7 后序遍历 postorder 9 15 7 20 3 返回如下
  • impala高级设置set之BATCH_SIZE

    官网地址 https impala apache org docs build html topics impala batch size html Number of rows evaluated at a time by SQL ope
  • [Python]考试应用界面和简单logo-学习笔记

    试题部分 list1 1 下列词语中划线字的读音完全正确的一组是 2 下列词语解释有错误的一组是 3 四川话中 瓜娃子 指的是 4 四川话中形容一个人是 干豇豆儿 是指这个人 5 四川话中 咔咔过过 是 6 妖精十怪 是 7 四川话中 呱迷
  • Mongodb 设置密码

    第一步 开机先 mongod dbpath 存放数据库文件夹路径 第二步 打开命令行窗口输入mongo 进入mongo环境 第三步 切换到 admin 数据库 use admin 第四步 给admin设置用户密码 user 用户名 pwd
  • 智能水位检测系统proteus_基于单片机控制的智能检测系统Proteus仿真设计研究

    0引言近年来 单片机发展到了一个全新阶段 广泛应用于电子 机械控制 自动化生产设计等行业 并逐步延伸到智能控制的诸多领域 以单片机为控制核心的小型自动化生产检测系统 尤其在一些液体产品的检测等复杂工程中 控制人员通过微处理单元对产品进行质量
  • mysql安装出现让输入根密码_MYSQL安装时解决要输入current root password的解决方法...

    在装MYSQL的时候发现要输入current root password不记得以前在电脑里装过 你的系统曾经装过MYSQL在重装就会要求输入原来设定的密码 如果是第一次安装就不会出现 在网上苦苦搜寻解决方法 终归结出以下解决方法 1 清除M
  • 牛逼,玩转 ChatGPT!

    ChatGPT是一种由OpenAI开发的人工智能模型 它可以模拟人类的对话交流 对话可以涉及各种话题 使用ChatGPT可以进行各种操作 例如自然语言生成 文本摘要 语言翻译 文本分类 问答系统等 下面是ChatGPT网站的可用链接 由于网
  • MySQL中存储过程与函数总结

    目录 1 存储过程与函数的概念 2 创建存储过程与函数 2 1 参数列表 3 使用变量 4 定义条件与处理程序 1 定义条件 2 定义处理程序 3 六种定义处理程序的方法 方法一 捕获sqlstate value 方法二 捕获mysql e
  • 介绍一种门限SM2密码方案

    中科院信息工程研究所的科研人员林璟锵 马原 荆继武等设计了一种 SM2 门限密码算法实现方案 他们在 2014 年 8 月向国家知识产权局提交了专利申请 名称是 适用于云计算的基于SM2算法的签名及解密方法和系统 授权公告号是 CN 104
  • 一念天堂

    一念成佛 一念成魔 很多事情就发生在一念之间 很多误会也发生在想说没说出口的一瞬间 虽然误会可能解开 但再也回不回从前 心安在这里给大家讲个故事 也算是给自己提个醒 该说的话一定要说出来 你不说别人永远都不知道 不该说的尽量别说 别人会误会
  • lua协程

    coroution协程 定义协程函数 co coroutine create function a b end 启动协程函数和继续运行 coroutine resume co 10 20 co coroutine wrap function
  • C++&QT实现计算器图形界面交互

    一 实验目的和要求 要求 在实验 03 实验 05的作业内容基础上 1 增加图形交互功能 2 增加3个逻辑运算符 并能处理逻辑运算符和算术运算符的混合运算 3 增加容错功能 能进行异常处理 说明 1 其中牵涉到数据结构相关的可复用代码 可自
  • C++实现——杨辉三角

    打印杨辉三角 include
  • k8s健康检查配置yaml文件编写

    1 就绪检测 apiVersion v1 kind Pod metadata name readiness httpget pod namespace default 放在那个空间下 spec ontainers name readines
  • 如何模拟编写MyBatis之DataSource与Session呢?

    转自 如何模拟编写MyBatis之DataSource与Session呢 下文笔者讲述mybatis之模拟DateSource和Session的方法分享 如下所示 DataSource和Session简介 DataSource 实现标准的j
  • linux sudo命令全称,linux sudo命令的概念与使用

    1 sudo介绍本文引用地址 http www eepw com cn article 201610 305498 htm sudo是linux下常用的允许普通用户使用超级用户权限的工具 允许系统管理员让普通用户执行一些或者全部的root命
  • Docker 之 RUN

    参考 https docs docker com engine reference builder run RUN 有两种形式 RUN