我已经阅读了有关CMD和ENTRYPOINT的文档
https://docs.docker.com/engine/reference/builder/#entrypoint
在这里,他们在表中提到“不允许使用CMD和ENTYRPOINT”,但是我创建了一个没有CMD和ENTRYPOINT的Dockerfile,并且镜像已成功构建。
从这里下载 Alpine tar Alpine Tar
Docker文件

from scratch
ADD alpine-minirootfs-3.11.2-x86_64.tar.gz /
COPY . /
建立图像:
docker build -t test:1 .
Sending build context to Docker daemon  2.724MB
Step 1/3 : from scratch
-----
Successfully tagged test:1

docker run -ti test:1 /bin/sh
/ #
有效!!那么,为什么在文档中提到CMD或ENTRYPOINT是必需的?

最佳答案

docker run命令行末尾指定命令会提供(或覆盖)CMD;同样,docker run --entrypoint选项提供(或覆盖)ENTRYPOINT。在您的示例中,您提供了一个/bin/sh命令,因此容器需要执行一些操作。如果不选择它,将会收到错误消息。

作为样式问题,除非您要扩展已经在自动运行应用程序的基础镜像(CMDnginx),否则Dockerfiles应该几乎始终声明一个tomcat。这样一来,您就可以docker run图像并启动嵌入其中的应用程序,而不必记住更具体的命令行调用。

关于docker - 是否需要在Dockerfile中提及CMD或ENTRYPOINT?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59599659/

10-16 16:49