ENTRYPOINT 和 CMD 都是 Dockerfile 中的指令,用于指定容器启动时要执行的命令。
区别如下:
- ENTRYPOINT 用于指定容器启动时要执行的命令或程序。它的参数会被保留下来,并且可以通过 CMD 或者 docker run 命令的参数来覆盖。
- CMD 用于指定容器启动时要执行的命令或程序的默认参数。它的参数可以被 docker run 命令的参数覆盖,如果在 Dockerfile 中有多个 CMD 指令,则只有最后一个 CMD 指令生效。
总结:
- ENTRYPOINT 是容器的入口点,定义容器启动时要执行的命令或程序,一般用于指定应用程序或服务的启动命令。
- CMD 是容器启动时要执行的命令或程序的默认参数,用于定义容器运行时的默认行为。
通常情况下,ENTRYPOINT 和 CMD 可以结合使用,ENTRYPOINT 用于指定启动命令,CMD 用于指定默认参数。这样可以在运行容器时,可以通过传入参数来覆盖CMD指定的默认参数,从而达到灵活配置容器的目的。