RUN、CMD 和 ENTRYPOINT区别

RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似。

1.RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。
2.CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换
3.ENTRYPOINT 配置容器启动时运行的命令。

比如下面的 Dockerfile 片段:

ENTRYPOINT ["/bin/echo", "Hello"]  
CMD ["world"]

当容器通过 docker run -it [image] 启动时,输出为:

Hello world

而如果通过 docker run -it [image] CloudMan 启动,则输出为:

Hello CloudMan
CMDENTRYPOINTDockerfile中两个常用的指令,它们在容器启动时运行命令方面有一些区别CMD指令用于指定容器启动时默认运行的命令,它可以被docker run命令行参数和CMD指令本身提供的参数覆盖。CMD指令有两种格式:exec格式和shell格式。exec格式的CMD指令推荐使用,它可以设置要执行的命令和参数,并且可以通过docker run命令行参数提供额外的参数。 ENTRYPOINT指令也是指定容器启动时运行的命令,与CMD不同的是,ENTRYPOINT一定会执行,而且不会被忽略。如果Dockerfile中存在多个ENTRYPOINT指令,只有最后一个ENTRYPOINT有效。ENTRYPOINT有两种格式:exec格式和shell格式。 exec格式的ENTRYPOINT指令用于设置要执行的命令和参数,同时可通过CMD提供额外的参数。shell格式的ENTRYPOINT指令会忽略任何CMDdocker run提供的参数。 综上所述,CMDENTRYPOINT区别在于CMD指令可以被覆盖,而ENTRYPOINT指令一定会执行且不会被忽略。此外,CMDENTRYPOINT指令都有exec格式和shell格式,但exec格式更常用和推荐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [cmdentrypoint区别](https://blog.csdn.net/MssGuo/article/details/126348571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值