首页/云/云与容器速查/Dockerfile ENTRYPOINT 固定入口
容器与 Docker106 条

Dockerfile ENTRYPOINT 固定入口

把镜像固定为某个可执行入口:docker run 的尾部命令作为参数追加而不是替换。脚本型入口必须用 exec 形式并注意 exec "$@" 转交参数。

云与容器速查云更新于 2026-10-12
作用固定入口;run 尾参作为参数传给它
推荐形式ENTRYPOINT ["可执行", "参数"](exec 数组)
与 CMD 组合ENTRYPOINT 定入口、CMD 给默认参数
临时覆盖docker run --entrypoint /bin/sh -it 镜像(调试用)

组合示例

组合示例
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]

脚本入口正确转交

脚本入口正确转交
#!/bin/sh
set -e
# 准备配置……
exec "$@"   # 用 exec 让应用接管 PID 1,信号直达
shell 形式的 ENTRYPOINT 会忽略 CMD 参数(参数被 sh -c 吞掉),是『CMD 写了没用』的经典原因。

易错点

  • 入口脚本末尾不用 exec:应用不是 PID 1,SIGTERM 收不到,停容器全靠超时强杀
  • shell 形式 ENTRYPOINT + CMD:CMD 参数被丢弃,容器行为与预期差一半

数据来源与参考

  • Docker Docs:Dockerfile reference(ENTRYPOINT)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌