Dockerfile 中 RUN 和 CMD 的区别

2024-01-04

我很困惑什么时候应该使用CMD vs RUN。例如,执行 bash/shell 命令(即ls -la)我总是会使用CMD或者有什么情况我会使用RUN?试图了解这两个类似的最佳实践Dockerfile指令。


RUN https://docs.docker.com/engine/reference/builder/#run是一个镜像构建步骤,之后容器的状态RUN命令将被提交到容器镜像。一个 Dockerfile 可以有很多RUN步骤一层一层地构建图像。

CMD https://docs.docker.com/engine/reference/builder/#cmd是启动构建的映像时容器默认执行的命令。 Dockerfile 只会使用最后的CMD定义的。这CMD启动容器时可以覆盖docker run $image $other_command.

入口点 https://docs.docker.com/engine/reference/builder/#entrypoint也与CMD并且可以修改方式aCMD当容器从镜像启动时被解释。

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

Dockerfile 中 RUN 和 CMD 的区别 的相关文章

随机推荐

  • Spark-将 JavaRDD 保存到 Cassandra

    This link http www datastax com dev blog accessing cassandra from spark in java显示了一种保存方法JavaRDD to Cassandra这样 import st
  • npm 警告已弃用 [电子邮件受保护]:graceful-fs 版本 3

    我正在运行 npm install 但它给了我一个错误 我还尝试在更新之前运行以下命令 npm install npm 并且我还更新了 Graceful fs npm install g graceful fs email protecte
  • javax.ws.rs.ProcessingException:找不到内容类型 application/json 的 writer

    我是 REST Web 服务的新手 我正在尝试 post 和 consumes 注释 如下所示 POST Path post Consumes application json public Response createProductIn
  • Google App Engine 和 jQuery Ajax 导致管道损坏错误

    我有一个非常标准的案例 我尝试通过 jQuery 的 Ajax 提交一些 JSON 数据 我的 JavaScript 代码如下所示
  • Fragment onResume() 和 backStack 问题

    当我从另一个片段回来时 我陷入了恢复片段的困境 设想 我有一个Fragment A 现在我正在打开多个片段Fragment A say A1 A2 A3 使用框架布局 现在我正在启动一个新的片段说Fragment B从 A1 A2 A3 之
  • jQuery 显示 setTimeout 计时器

    我正在尝试构建一个简单的倒计时应用程序 是否可以在 setTimeout 上显示计时器值 或者我必须使用 for 循环 Thanks with setTimeout var n 100 setTimeout countDown 1000 f
  • SimpleCursorAdapter 和 CursorAdapter

    我想知道 CursorAdapter 和 SimpleCursorAdapter 之间有什么区别 人们会根据什么标准选择其中之一 您与他们合作的经历 谢谢 我认为主要问题还没有得到解答 SimpleCursorAdapter 的存在是为了那
  • Java 中的尾部调用优化

    从 Java 8 开始 Java 不提供尾部调用优化 TCO 经过研究 我了解到这是 在 JDK 类中 有许多安全敏感方法 它们依赖于计算 JDK 库代码和调用代码之间的堆栈帧来确定谁在调用它们 然而 基于 JVM 的 Scala 支持尾部
  • 文件丢失 在文件系统中,捕获表单提交

    我有一个通过 jQuery 提交的表单ajaxSubmit 功能 此表单包含一个文件控件 并且已提出一个可能的故障点 如果在提交表单之前所选文件被重命名 删除或以其他方式变得不可访问 则该表单可能会或可能不会根据浏览器提交 虽然提交失败是预
  • 使用 PyDict_SetItemString 进行引用计数

    我想知道当将新值设置到 PyDict 在 C 扩展内 内的现有字段中时 内存管理 引用计数如何工作 例如 假设按以下方式创建和填充字典 myPyDict PyDict New tempPyObj PyString FromString Or
  • 读取科学计数法 scanf

    我正在开发一个程序 它应该只有一个 scanf 函数 并且应该能够接受科学计数法和实数的输入 任何帮助将不胜感激 根据scanf文档 http en cppreference com w c io fscanf f匹配浮点数 数字的格式与预
  • 通过初始化列表实例化抽象类[重复]

    这个问题在这里已经有答案了 我想了解为什么编译器允许编译以下代码 include
  • Numpy 和 matplotlib 垃圾收集

    我有一个 python 脚本 它对不同的参数进行许多模拟 Q K 绘制结果并将其存储到磁盘 每组参数 Q K 生成 200x200x80 数据点的 3D 体积网格 这需要约 100 MB 的数据 然后逐层绘制该体积网格的一部分 生成约 60
  • 将参数绑定到信号/槽

    我基本上有多个事件信号 我想将它们连接到同一个插槽 我想知道的是如何将基于字符串的参数传递到同一插槽 以便该插槽知道该信号来自哪个信号 一种替代方法是制作与信号一样多的槽 然后以 1 1 的方式连接它们 但考虑到所有处理的代码非常相似 这种
  • 在 R 中生成滞后时间序列横截面变量

    我是 R 新用户 我有一个时间序列横截面数据集 尽管我已经找到了滞后时间序列数据的方法R 我还没有找到创建滞后时间序列横截面变量的方法 以便我可以在分析中使用它们 以下是您可以如何使用lag 功能与zoo 和面板系列数据 gt librar
  • 远程主机标识已更改?

    NPM 表示可能存在安全错误 meteor npm install mui system npm ERR Error while executing npm ERR usr local bin git ls remote h t ssh e
  • 开始创建自定义视图过渡

    我正在寻找有关创建自定义视图转换的教程 特别是 涉及除受影响的 UIView 之外的元素的转换 例如在转换发生时播放动画或修改正在转换的 UIView 的屏幕截图 我并不是指实现一组基本的过渡 幻灯片 淡入淡出等 苹果网站上有很多相关示例
  • 如何以相同的方式对两个数组进行排序?

    我希望输出为 3 0 2 36 1 1 键和以相同方式排序的值 three one two fun main var l 0 var letters arrayOf one two three var digits arrayOf 2 36
  • hadoop 空指针异常

    我正在尝试设置一个hadoop的多节点集群迈克尔 诺尔的方式 http www michael noll com tutorials running hadoop on ubuntu linux multi node cluster 使用两
  • Dockerfile 中 RUN 和 CMD 的区别

    我很困惑什么时候应该使用CMD vs RUN 例如 执行 bash shell 命令 即ls la 我总是会使用CMD或者有什么情况我会使用RUN 试图了解这两个类似的最佳实践Dockerfile指令 RUN https docs dock