网上关于CMD和entrypoint的相关介绍很多,在实际工程中也确实需要了解,经过总结,有如下重点
- 如果 docker run 指定了其他命令,CMD 指定的默认命令将被忽略。
- 如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。
- 在Dockerfile中,只能有一个ENTRYPOINT指令,如果有多个ENTRYPOINT指令则以最后一个为准。
- 如果镜像中设定了ENTRYPOINT,那么命令中的CMD也可以作为参数追加到ENTRYPOINT中。
- entrypoint如果有多个,只会执行最后一个entrypoint
- docker run的--entrypoint可以覆盖Dockerfile中ENTRYPOINT设置的命令。