为什么在某些图像中同时定义了 CMD 和入口点?
Why both CMD and entrypoint defined in some images?
我看到一些基于 inspect
的图像同时设置了 CMD
和 ENTRYPOINT
。
这是什么想法?两者都设置时服务于哪些用例?
每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 定义了此二进制文件的默认参数。然后我们可以在 运行 容器时覆盖。
我看到一些基于 inspect
的图像同时设置了 CMD
和 ENTRYPOINT
。
这是什么想法?两者都设置时服务于哪些用例?
每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 定义了此二进制文件的默认参数。然后我们可以在 运行 容器时覆盖。