当前位置: 首页 > 知识库问答 >
问题:

Dockerfile中RUN和CMD之间的区别

贝德辉
2023-03-14

我很困惑什么时候应该使用cmdrun。例如,要执行bash/shell命令(即ls-la),我将始终使用cmd,或者是否存在使用run的情况?试图理解关于这两个类似的dockerfile指令的最佳实践。

共有1个答案

南宫正阳
2023-03-14

RUN是一个映像构建步骤,在RUN命令之后容器的状态将提交到容器映像。一个Dockerfile可以有许多run步骤,这些步骤一层一层地建立映像。

CMD是容器在启动生成的映像时默认执行的命令。Dockerfile将只使用最终定义的cmd。使用Docker run$image$other_command启动容器时,可以重写cmd

ENTRYPOINT还与cmd密切相关,可以修改容器启动映像的方式。

 类似资料:
  • 我很困惑什么时候应该使用和。例如,要执行bash/shell命令(即),我将始终使用,或者是否存在使用的情况?试图理解关于这两个类似的指令的最佳实践。

  • 发件人:https://docs.docker.com/engine/reference/builder/ 指令将在当前图像顶部的新层中执行任何命令,并提交结果。得到的提交映像将用于中的下一步。 的主要目的是为正在执行的容器提供默认值。

  • 问题内容: 在Dockerfiles中,有两个与我相似的命令:和。但是我想它们之间有一个(细微的?)差异- 否则对于同一件事有两个命令是没有任何意义的。 文档说明 CMD的主要目的是为执行中的容器提供默认值。 和为: ENTRYPOINT帮助您配置可以作为可执行文件运行的容器。 那么,这两个命令有什么区别? 问题答案: Docker有一个默认入口点,但没有默认命令。 当您像这样运行docker时:

  • 在Dockerfiles中有两个与我类似的命令:和。但我猜有一个(微妙?)它们之间的差异--否则,对同一件事使用两个命令是没有任何意义的。 文档中的状态为 CMD的主要目的是为正在执行的容器提供默认值。 入口点帮助您配置可以作为可执行文件运行的容器。 那么,这两个命令有什么区别呢?

  • 问题内容: 我是Docker的新手,对ockfile有一个简单的问题。我们可以在停靠文件中写入入口点和CMD。似乎在创建容器期间执行了入口点。并且在启动容器期间执行CMD。这是真的? 问题答案: 不完全是: 配置将作为可执行文件运行的容器。 因此它 总是 执行的(或者默认是)。 命令行参数to 将以exec形式附加在所有元素之后,并将覆盖使用CMD指定的所有元素。 shell形式阻止使用任何或运行

  • 根据这一点,以下参考https://docs.docker.com/engine/reference/builder/#copy,我看不出ADD和copy之间有什么区别。请用一个简单的例子来解释这两者的区别。