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

DockerFile中的CMD和ENTRYPOINT有什么区别?

魏雅惠
2023-03-14

在Dockerfiles中有两个与我类似的命令:cmdentrypoint。但我猜有一个(微妙?)它们之间的差异--否则,对同一件事使用两个命令是没有任何意义的。

文档中的状态为cmd

CMD的主要目的是为正在执行的容器提供默认值。

入口点帮助您配置可以作为可执行文件运行的容器。

那么,这两个命令有什么区别呢?

共有1个答案

施刚毅
2023-03-14

Docker有一个默认入口点,它是/bin/sh-c,但没有默认命令。

当您运行docker:docker run-i-t ubuntu bash时,入口点是默认的/bin/sh-c,映像是ubuntu,命令是bash

该命令通过入口点运行。即,实际执行的是/bin/sh-c bash。这允许Docker依靠shell的解析器快速实现run

后来,人们要求能够对其进行自定义,因此引入了entrypoint--entrypoint

上面示例ubuntu后面的所有内容都是命令,并传递到入口点。在使用cmd指令时,就像在执行Docker run-i-t ubuntu 一样。 将是入口点的参数。

如果输入以下命令docker run-i-t ubuntu也会得到相同的结果。您仍将在容器中启动bash shell,因为ubuntu Dockerfile指定了默认的cmd:cmd[“bash”]

当所有东西都传递到入口点时,您可以从您的图像中获得一个非常好的行为。@jiri的例子很好,它展示了如何使用一个图像作为“二进制”。当使用[“/bin/cat”]作为入口点,然后执行Docker run img/etc/passwd时,您会得到它,/etc/passwd是命令,并被传递到入口点,因此最终结果执行只是/bin/cat/etc/passwd

另一个例子是将任何cli作为入口点。例如,如果您有一个redis映像,则不需要运行docker run redisimg redis-h something-u toto get key,您可以简单地使用entrypoint[“redis”,“-h”,“something”,“-u”,“toto”],然后这样运行以获得相同的结果:docker run redisimg get key

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

  • 问题内容: 我对何时应该使用vs 感到困惑。例如,要执行bash / shell命令(即),我将始终使用它,或者是否存在我会使用的情况?试图了解有关这两个类似指令的最佳实践。 问题答案: RUN是映像构建步骤,命令后将容器的状态提交到容器映像。一个Dockerfile可以有很多步骤相互叠加以构建映像。 CMD是启动构建映像时容器默认执行的命令。Dockerfile将仅使用最终定义的。使用启动容器时

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

  • 问题内容: Dockerfile中的和命令之间有什么区别,何时可以在另一个之上使用? COPY指令将从以下位置复制新文件并将其添加到容器的文件系统中: ADD指令将从中复制新文件并将其添加到位于path的容器的文件系统中。 问题答案: 您应该查看和文档以获取有关其行为的更详细描述,但简而言之,主要区别在于可以做的还不止: 允许成为网址 参考下面的评论, 文档指出: 如果是以公认的压缩格式(身份,g

  • Dockerfile中的和命令之间有什么区别?什么时候我会使用一个命令而不是另一个命令? COPY指令将从复制新文件,并将它们添加到路径的容器文件系统中 ADD指令将从复制新文件,并将它们添加到路径的容器文件系统中。

  • 我一直在阅读和学习Docker,并试图正确选择要使用的Django设置。到目前为止,存在以下两种情况之一: Docker撰写或Dockerfile 我知道Docker Compose中使用Dockerfiles,但我不确定将所有内容放在一个大Dockerfiles中,并使用多个来自不同图像的命令是否是一种好的做法? 我想使用几个不同的图像,包括: 请就使用Docker设置此类环境的最佳实践提供建议