为什么在某些图像中同时定义了 CMD 和入口点?

Why both CMD and entrypoint defined in some images?

我看到一些基于 inspect 的图像同时设置了 CMDENTRYPOINT
这是什么想法?两者都设置时服务于哪些用例?

https://docs.docker.com/engine/reference/builder/#cmd

CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

这意味着 CMD 可以用作入口点的参数列表。

更新 1

这里的想法是您可以指定入口点(开始时二进制到 运行),然后将 CMD 参数设置为可以覆盖的入口点。

更新 2

这是一个例子:

cat Dockerfile
FROM busybox
ENTRYPOINT ["ls"]
CMD ["etc"]

现在,如果您构建图像并 运行 它没有任何参数,它将生成包含 etc 文件夹

内容的列表
$ docker run lister
group
hostname
hosts
localtime
mtab
network
passwd
resolv.conf
shadow

如果您确实指定了参数,则可以覆盖 CMD 并列出不同文件夹的内容

$ docker run lister var
spool
www

所以可执行文件在两种情况下都保持不变,而 Dockerfile 中的 CMD 定义了此二进制文件的默认参数。然后我们可以在 运行 容器时覆盖。