Dockerfile中RUN、CMD、ENTRYPOINT区别

在Dockerfile中有 RUNCMDENTRYPOINT 三种执行命令的语法,下面是这三条命令的区别。

RUN:

执行命令并创建新的image Layer
1、可以有多个,每条RUN命令都会建立新的image layer
2、建议多条命令使用 && 写成一条, \ 用来换行。

CMD

设置容器启动后默认执行的命令或参数
1、容器启动时默认执行的命令
2、docker run 时启动时执行了其他命令,CMD命令会被忽略掉
3、如果定义了多个CMD命令,只有最后一个会被执行

ENTRYPOINT

设置容器启动时运行的命令
1、让容器以应用程序或服务形式启动
2、命令永远不会被忽略,一定会被执行
3、容器启动时指定的其他命令无效