Docker 中的 CMD 和 ENTRYPOINT
Docker 中的 CMD 和 ENTRYPOINT 都是用来指定容器启动时执行的命令,但它们的作用和使用场景有明显区别,理解它们的区别能帮助我们更灵活地控制容器行为。
CMD 和 ENTRYPOINT 的通俗理解
- ENTRYPOINT:就像容器的“主菜”,是容器启动时必须执行的命令,无论启动容器时传入什么参数,这个命令都会执行。可以把它想象成披萨店的“披萨”,披萨是必做的主食。
-
CMD:就像披萨的“默认口味”,是容器启动时的默认参数或命令,如果启动容器时没有指定其他命令,CMD 会生效;如果指定了其他命令,CMD 会被覆盖。它是给 ENTRYPOINT 提供默认参数,或者单独作为默认命令使用。
-
如果只有 CMD,启动容器时指定的命令会替代 CMD。
- 如果只有 ENTRYPOINT,启动容器时的参数会附加到 ENTRYPOINT 命令后面。
- 如果两者结合,ENTRYPOINT 定义主命令,CMD 定义默认参数,启动时可以覆盖 CMD 参数但不会替换 ENTRYPOINT。