云计算-7-Dockerfile深度解析CMD和ENTRYPOINT指令
发布于 2024-07-19
1011
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
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葵花宝典的其他文章
Docker-compose安装ES、Kibana、IK
安装 Elasticsearch(ES)、Kibana 和 IK Analyzer 的 7.14.1 版本可以通过 Docker Compose 进行安装
IDEA的降龙八掌,牛批了!!
IDEA的降龙八掌,牛批了!!
SpringBoot-9-Spring Boot进阶篇:实现配置修改热部署,提升开发效率
Spring Boot进阶篇:实现配置修改热部署,提升开发效率
Sentinel安装和项目整合Sentinel
Sentinel安装和项目整合Sentinel
SpringBoot-12-banner自定义
SpringBoot-12-banner自定义主要介绍Banner实现的两种方式:通过代码方式实现和通过静态文件方式实现
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线