大家好,我是陆砚码,今天咱们来聊聊Docker里的两个小兄弟——ENTRYPOINT和CMD。它们俩都是用来定义容器启动命令的,但用法和效果可大不一样。
先来个快速总结:
- ENTRYPOINT:就像是容器的主命令,一旦定义了,容器启动时就会执行这个命令。
- CMD:提供默认参数,或者在没有指定ENTRYPOINT时,作为默认命令。
详细来说说它们的区别:
🔍 核心区别:
- 作用与定位:ENTRYPOINT定义的是容器的主命令,而CMD提供的是默认参数。
- 可覆盖性:ENTRYPOINT比较难被覆盖,需要用docker run --entrypoint来替换;而CMD很容易被覆盖,直接在docker run后面追加参数就可以。
- 组合使用时的行为:当两者都存在时,ENTRYPOINT定义主命令,CMD提供默认参数。docker run的参数会覆盖CMD,但不会影响ENTRYPOINT。
举个例子:
ENTRYPOINT [
