首页/云/Docker 容器速查/退出码 127:找不到命令
容器排障52 条

退出码 127:找不到命令

127 表示容器内找不到要执行的命令:镜像里没装、PATH 里没有、或 entrypoint 的 shebang 指向不存在的解释器。

Docker 容器速查云更新于 2026-10-13

退出码 127 的含义

退出码 127 表示容器内找不到要执行的命令:镜像里没有安装、PATH 里没有该目录,或入口脚本的 shebang 指向了不存在的解释器。它与 125(Docker 层失败)的区别是容器已经起来了,失败发生在容器内部。

基本信息

含义容器内的命令不存在
常见原因镜像未安装、PATH 不含该目录、shebang 目标缺失
排查手段查看 PATH、核对命令是否存在、看入口脚本首行
易混淆与 125(Docker 层失败)不同
区分提示别与应用自定义返回码混用

典型使用场景

  • 容器启动即退出并提示命令不存在时定位
  • 基础镜像换发行版后命令名或路径变化
  • 入口脚本 shebang 指向了不存在的解释器
  • 流水线里构建产物没有被放进镜像
  • 排查 PATH 被覆盖导致命令不可见

排查命令是否可用

排查命令是否可用
docker run --rm alpine curl --version                    # 精简镜像里没有 curl
docker run --rm --entrypoint sh alpine -c 'command -v curl || echo missing'
docker run --rm --entrypoint sh alpine -c 'echo $PATH'
docker run --rm --entrypoint sh alpine -c 'head -1 /docker-entrypoint.sh'   # 检查 shebang

线索与处理方向

线索原因处理方向
命令确实不存在镜像未安装构建期补装
命令在但调不到PATH 不含该目录用绝对路径或调整 PATH
入口脚本报错shebang 目标缺失改 shebang 或换基础镜像
本地正常线上异常镜像版本不同核对实际使用的镜像
宿主上命令可用不代表容器里可用,镜像的 PATH 与包集合是另一套。
shebang 写成 bash 但镜像是只有 sh 的精简发行版时,同样会以找不到命令的形式失败。
排查时先确认命令是否存在于镜像,再看 PATH,顺序反了会多绕一圈。
应用自定义的返回码可能与这个约定值撞车,脚本判断时最好同时看日志内容。
构建产物没被打进镜像时也会表现成找不到命令,核对镜像内容比反复改配置更快。
把常用排查工具装进镜像的调试变体,日常排障会省下不少时间。
排查时先在容器内手动执行一遍目标命令并同时打印 PATH,两条信息放在一起看,多数情况一次就能定性。

易错点

  • 宿主上命令可用不代表容器里可用,镜像的 PATH 与包集合是另一套
  • shebang 与镜像基础发行版不匹配时同样报命令找不到
  • 构建产物没打进镜像却被当成配置问题排查,浪费时间
  • 把应用自定义返回码与这个约定值混用,判断逻辑会出错

数据来源与参考

  • Docker 官方文档:docker run Exit status(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌