CMD和ENTRYPOINT是Dockerfile中定义容器启动命令的关键字。
CMD用于指定容器启动时运行的命令。可以有多个CMD指令,但只有最后一个CMD指令会生效。CMD可以包含参数,如果在运行docker run命令时指定了参数,将会覆盖CMD中指定的参数。
ENTRYPOINT用于指定容器启动时运行的可执行文件或脚本。和CMD一样,只有最后一个ENTRYPOINT指令会生效。ENTRYPOINT指令不会被覆盖,而是被附加到docker run命令的参数之前。
总结起来,CMD用于定义默认的容器启动命令,可以被覆盖,而ENTRYPOINT用于定义容器启动的主要命令,不会被覆盖。通常情况下,CMD用于提供默认的命令参数,而ENTRYPOINT用于指定容器启动的主要命令。