云计算-7-Dockerfile深度解析CMD和ENTRYPOINT指令
发布于 2024-07-19
1354
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
springboot葵花宝典
扫码关注公众号
扫码阅读
手机扫码阅读
Dockerfile深度解析
CMD指令
CMD用于指定容器启动时的默认命令和参数。Docker中的容器本质是进程,启动时需要明确的程序运行指令。CMD有两种格式:
- Shell格式:
CMD command arg1 arg2 - Exec格式:
CMD ["可执行文件", "arg1", "arg2"] - 第三种写法:
CMD ["arg1", "arg2"],用于为ENTRYPOINT提供默认参数。
示例中展示了如何使用CMD指令启动容器,并解释了其行为。尤其强调了CMD与容器主进程的关系:主进程退出后,容器也随之退出。
示例1
基于nginx镜像构建,使用CMD打印文本。运行容器后,通过docker logs查看日志。
示例2
基于CentOS镜像构建,安装nginx并使用CMD启动nginx服务。提示指出CMD写法需要注意进程前后台的区别,否则可能导致容器意外退出。
ENTRYPOINT指令
ENTRYPOINT与CMD类似,也是用于指定容器启动程序和参数。其格式分为:
- Shell格式:
command param1 param2 - Exec格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT允许用户在运行容器时覆盖或补充参数。若同时指定CMD和ENTRYPOINT,则CMD内容作为参数传递给ENTRYPOINT。
示例3
安装nginx并使用ENTRYPOINT启动服务。通过docker run可传入参数,例如-v用于查看nginx版本。
示例4
类似示例3,展示了ENTRYPOINT与CMD组合使用的效果。
提示与限制
- Dockerfile中只能有一个CMD指令,后续CMD会覆盖前一个。
- CMD用于提供默认值,主要为执行中的容器配置默认命令或参数。
- CMD为ENTRYPOINT提供默认参数时需使用JSON数组格式。
- 运行容器时传递参数会覆盖CMD内容。
示例展示了CMD与ENTRYPOINT结合使用的场景及效果。
springboot葵花宝典
springboot葵花宝典
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
springboot葵花宝典的其他文章
MQTT 与 EMQ快速入门
MQTT 与 EMQ
SpringBoot 整合 ELK 实现日志采集与监控
ELK是Elasticsearch、Logstash、Kibana他们三个组合起来可以搭建日志系统,本文主要讲解使用docker安装ELK收集SoringBoot应用产生的日志
Spring-1-透彻理解Spring XML的必备知识
Spring:Spring是一个开源的Java应用程序开发框架,提供了丰富的功能和组件来简化企业级应用程序的开发。Spring框架包括多个模块,如核心容器、数据访问、Web开发、AOP等,各个模块可按需引入和使用。
JVM由那些部分组成,运行流程是什么?
JVM由那些部分组成,运行流程是什么
SQL优化
SQL优化
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线