ENTRYPOINT和CMD都是Dockerfile中用来指定容器启动时要执行的命令的指令,它们的区别如下:
CMD指定容器启动时要执行的命令,可以有多个CMD指令,但只有最后一个CMD指令会生效。CMD指令可以被docker run命令的参数覆盖。
ENTRYPOINT也指定容器启动时要执行的命令,但只能有一个ENTRYPOINT指令,多个ENTRYPOINT指令会被覆盖。ENTRYPOINT指令不会被docker run命令的参数覆盖,而是将docker run命令的参数作为ENTRYPOINT指令的参数传递进去。
简而言之,CMD用于定义默认的命令和参数,可以被docker run命令的参数覆盖,而ENTRYPOINT用于定义容器的主要命令,不会被docker run命令的参数覆盖。