我已经阅读了有关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
命令,因此容器需要执行一些操作。如果不选择它,将会收到错误消息。
作为样式问题,除非您要扩展已经在自动运行应用程序的基础镜像(CMD
,nginx
),否则Dockerfiles应该几乎始终声明一个tomcat
。这样一来,您就可以docker run
图像并启动嵌入其中的应用程序,而不必记住更具体的命令行调用。
关于docker - 是否需要在Dockerfile中提及CMD或ENTRYPOINT?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59599659/