You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中ENTRYPOINT指令与--entrypoint参数运行行为不一致问题

核心问题出在你Dockerfile里ENTRYPOINT的语法错误

Docker的ENTRYPOINT支持两种写法:exec数组格式、shell命令格式,其中exec数组格式强制要求使用双引号包裹数组元素,你写的ENTRYPOINT ['/src/script.sh']用了单引号,不符合语法规范,Docker无法将其识别为exec数组,会自动回退到shell格式处理,相当于实际执行的启动命令是/bin/sh -c "['/src/script.sh']",系统会把[/src/script.sh]整个当成一个可执行文件名去查找,自然会报文件不存在的错误。

而你执行docker run --entrypoint /src/script.sh created_image时,是直接将/src/script.sh作为独立的可执行路径传给容器启动逻辑,绕过了Dockerfile里错误定义的ENTRYPOINT解析逻辑,所以脚本可以正常运行。

修复方案
  • 把ENTRYPOINT修改为符合规范的exec数组写法即可,调整后Dockerfile对应行改为:
    ENTRYPOINT ["/src/script.sh"]
    
    重新构建镜像后直接docker run created_image就能正常启动。
  • 如果你不需要处理容器停止的信号传递,也可以直接用shell格式写:ENTRYPOINT /src/script.sh,也能正常运行,但更推荐标准的exec数组写法。

内容的提问来源于stack exchange,提问作者Farrell Fileas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:57:04