一个Dockerfile只会执行一个 entry point 和cmd
如果文件中存在多个该命令只会执行最后一个
entrypoint 和cmd 区别:
- entrypoint会将启动的命令追加到文件ENTRYPOINT后面:
- 命令 docker run -itd nginx nginx:1.0 /bash/bin
- 最后执行的结果就是 docker run -itd nginx nginx:1.0 ${文件ENPOINT命令} /bash/bin
- 命令 docker run -itd nginx nginx:1.0 /bash/bin
- cmd启动时会覆盖文件中的CMD
当用户同时写了command和args的时候自然是可以覆盖DockerFile中ENTRYPOINT的命令行和参数,那么对于具体情况呢,比如仅仅写了command或者args的时候呢?完整的情况分类如下:
- 如果command和args均没有写,那么用Docker默认的配置。
- 如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
- 如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。
- 如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。
