讲师中心 微信公众号
AI工具推荐 视频效率加速

Dockerfile 怎么使用 ENTRYPOINT 配置容器的入口点程序

风宇小哥_1039

风宇小哥_1039

发布时间:2026-10-17 08:23:05

|

454人浏览过

|

来源于php中文网

原创

ENTRYPOINT 定义容器启动时必须执行的主程序,推荐使用 exec 格式(如 ENTRYPOINT ["nginx", "-g"])确保 PID 1 和信号传递;配合 CMD 提供可覆盖的默认参数;复杂逻辑可用 entrypoint.sh 封装并以 exec "$@" 结尾;调试时可用 --entrypoint 临时覆盖。

entrypoint 用于定义容器启动时必须执行的主程序,它决定了容器的“身份”和核心行为。推荐始终使用 exec 格式(json 数组写法),确保主进程获得 pid 1 并能正确接收系统信号。

用 exec 格式声明入口点

这是最安全、最标准的写法:

  • 语法为 ENTRYPOINT ["可执行文件", "参数1", "参数2"]
  • 例如:ENTRYPOINT ["nginx", "-g"] —— 表示容器默认以 nginx -g 启动
  • 此时 CMD 可提供默认后续参数,如 CMD ["daemon off;"],最终运行 nginx -g "daemon off;"
  • 若运行 docker run my-nginx -c /etc/nginx.conf,则实际执行 nginx -g -c /etc/nginx.conf(CMD 被替换)

搭配 CMD 提供可覆盖的默认参数

ENTRYPOINT 定义“做什么”,CMD 定义“怎么做(默认)”,两者配合提升灵活性:

Learn Docker
Learn Docker

通过 LabEx 容器基础课程和镜像/编排实验学习 Docker。Docker 课程和实验通过 LabEx MCP 获取,返回 labex.io 链接以继续。

下载
  • 只写 ENTRYPOINT:容器每次启动都固定执行该命令,无法通过 docker run 追加或修改参数
  • ENTRYPOINT + CMD(exec 格式):CMD 的内容作为 ENTRYPOINT 的默认参数,且可在运行时被完整替换
  • 错误示范:ENTRYPOINT nginx -g(shell 格式)——会启动 /bin/sh -c,导致 PID 不是 nginx,SIGTERM 无法传入,容器 docker stop 时可能强制终止

用入口脚本封装初始化逻辑

复杂场景下,建议把 ENTRYPOINT 指向一个 shell 脚本,统一处理环境检查、配置生成、依赖等待等:

  • Dockerfile 中写:ENTRYPOINT ["./entrypoint.sh"],并确保脚本有执行权限(RUN chmod +x entrypoint.sh)
  • 脚本开头必须是 #!/bin/sh,结尾必须是 exec "$@"(不是 "$@")
  • exec "$@" 确保主应用进程接管 PID 1,支持优雅退出
  • 脚本内可做:检查 $DB_HOST 是否设置、等待数据库就绪、用 envsubst 渲染配置模板等

运行时临时覆盖入口点

调试或应急时,可用 --entrypoint 参数绕过镜像中定义的 ENTRYPOINT:

  • docker run --entrypoint /bin/sh my-app → 启动交互式 shell,跳过原入口逻辑
  • docker run --entrypoint curl my-app http://host/health → 直接执行健康探测
  • 注意:该覆盖只作用于单次运行,不影响镜像本身

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6239

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3025

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

3908

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2705

2025.08.29

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

725

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5479

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6497

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2493

2024.04.08

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn