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

Docker构建返回非零代码127:RUN命令未找到问题求助

解决Docker构建时/bin/sh: RUN: not found的错误

这个问题是对Dockerfile的RUN指令语法理解出了小偏差,我来给你理清楚:

你修改后的Dockerfile里犯了一个典型错误——把多个RUN关键字写在了同一条指令里:

FROM alpine:3.4
RUN apk update && RUN apk add curl && RUN apk add vim && RUN apk add git

这里的核心问题是:RUN是Dockerfile的指令关键字,每一个RUN开头代表一条独立的构建步骤。当你把RUN放在&&后面时,Docker会把整段字符串apk update && RUN apk add ...传给shell执行,shell会把RUN当成一个系统命令去查找——但Alpine镜像里根本没有这个命令,所以就抛出了RUN: not found的错误,返回码127就是系统找不到指定命令的标准错误码。

正确的写法有两种:

1. 合并成一条RUN指令(推荐,减少镜像层)

把所有要执行的shell命令用&&连接,只保留一个RUN关键字,而且可以把多个apk add合并成一个命令,更符合Alpine的使用习惯:

FROM alpine:3.4
RUN apk update && apk add curl vim git

2. 拆分成多条独立的RUN指令

如果需要把步骤分开,每条指令单独用RUN开头:

FROM alpine:3.4
RUN apk update
RUN apk add curl
RUN apk add vim
RUN apk add git

额外优化小提示

第一种写法更推荐,因为Docker每执行一条RUN就会生成一个新的镜像层,过多的镜像层会增大镜像体积,也会降低构建效率。合并成一条RUN可以减少层数,同时用&&连接可以保证前面的命令执行成功后才会执行后面的,避免构建失败时出现无效的镜像层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:26:32