我很困惑什么时候应该使用cmd
和run
。例如,要执行bash/shell命令(即ls-la
),我将始终使用cmd
,或者是否存在使用run
的情况?试图理解关于这两个类似的dockerfile
指令的最佳实践。
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之间有什么区别。请用一个简单的例子来解释这两者的区别。