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

Docker启动容器报HTTP 400错误 找不到./entrypoint.sh如何解决

Docker启动容器报entrypoint.sh不存在错误排查方案

核心报错信息:
Error invoking remote method 'docker-start-container': Error: (HTTP code 400) unexpected - failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./entrypoint.sh": stat ./entrypoint.sh: no such file or directory: unknown

常见触发原因

  • 镜像构建环节未将entrypoint.sh脚本拷贝到容器内对应路径,可能是Dockerfile中COPY指令路径写错,或是.dockerignore规则把本地的entrypoint.sh排除,导致镜像内部根本没有该文件
  • 路径匹配错误:Dockerfile中WORKDIR配置、docker run命令-w参数、docker-compose中working_dir配置的工作目录,和entrypoint.sh实际存放路径不一致,使用相对路径./entrypoint.sh时自然无法定位文件
  • 脚本格式异常:在Windows环境编写的entrypoint.sh默认使用CRLF换行符,Linux运行时无法识别该格式,会抛出文件不存在的误报
  • 挂载覆盖:启动容器时将本地空目录/其他目录挂载到了entrypoint.sh所在的容器目录,把镜像中原有的脚本文件覆盖掉了
  • 少数旧版本runc运行时,会在脚本无执行权限时抛出找不到文件的异常,而非标准的权限不足报错

修复步骤

  1. 先定位文件实际位置,执行以下命令启动临时调试容器,绕过原入口点进入容器内部:
docker run --rm -it --entrypoint sh 你的镜像名称:镜像标签

进入容器后执行find / -name entrypoint.sh查看脚本的绝对路径,后续把启动命令、Dockerfile里ENTRYPOINT配置的相对路径替换为查到的绝对路径即可,比如查到路径为/app/entrypoint.sh就直接写全路径,不要用./开头的相对路径。
2. 修正镜像构建配置:

  • 检查Dockerfile的COPY指令,确认entrypoint.sh被正确拷贝到容器目标路径,同时检查.dockerignore文件,确认没有把entrypoint.sh加入排除列表
  • 尽量在ENTRYPOINT/CMD配置中使用脚本绝对路径,避免依赖工作目录的相对路径
  • 在Dockerfile中增加执行权限配置:RUN chmod +x /脚本所在绝对路径/entrypoint.sh
  1. 修正脚本格式:如果是Windows环境编写的脚本,用dos2unix工具转换换行符,或在代码编辑器中将换行符切换为LF格式后重新保存,重新构建镜像即可
  2. 检查挂载配置:核对docker run的-v参数、docker-compose的volumes配置,如果挂载目标路径是entrypoint.sh所在目录,要么调整挂载路径避开该目录,要么把entrypoint.sh放到本地挂载的对应目录中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:39:17