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

在Alpine Linux Docker容器中whoami、mc命令无法识别的问题

容器中whoami/mc命令找不到问题的解决办法

问题背景

构建镜像并运行容器后,欢迎信息可正常输出,但whoami和mc命令提示找不到;将这两个命令移至Dockerfile的CMD指令中也无效,仅移除欢迎脚本直接运行mc则正常工作。

相关代码与操作

Dockerfile内容

FROM alpine:latest

RUN apk update && \
    apk add --no-cache mc curl nano git 
RUN apk add nethack && \
    apk add figlet cmatrix lynx mutt sl cmus newsboat ranger alpine dialog elinks fortune && \
    apk add gnuplot inxi ncdu nyancat sc screen tree units w3m wget zsh
    
RUN addgroup -g 10000 teamX && \
    adduser -u 10000 -G teamX -s /bin/sh -D userX

COPY entrypoint.sh /
RUN chmod 777 /entrypoint.sh

ENTRYPOINT ["/bin/sh", "-c", "source entrypoint.sh"]

entrypoint.sh脚本内容

#!/bin/sh
echo "WELCOME !!!"
echo "Installed user soft:"

echo "wget - A command-line program for downloading files from the internet"
echo "zhs"
echo "curl"
echo "git"
whoami
mc

构建与运行命令

docker build -t textlinux -f Dockerfile .
docker run -it textlinux

报错信息

curl
git
: not foundtrypoint.sh: line 31: whoami
: not foundtrypoint.sh: line 32: mc
: not foundtrypoint.sh: line 33:

已尝试的无效操作

在Dockerfile中添加CMD指令:

CMD ["whoami"]  
CMD ["mc"]  

问题依旧。

原因分析

  1. 脚本换行符不兼容:报错信息的格式异常(命令与错误信息混杂),说明entrypoint.sh使用了Windows格式的CRLF换行符,Alpine的sh无法识别,导致命令被解析为包含隐藏字符的错误格式,进而提示"命令找不到"。
  2. ENTRYPOINT执行方式问题:使用/bin/sh -c "source entrypoint.sh"的嵌套执行方式,可能导致环境变量加载异常;同时Docker中多个CMD指令仅最后一个生效,且ENTRYPOINT存在时CMD会作为其参数,所以之前的CMD写法无法生效。

解决方案

方案1:修复脚本换行符

将entrypoint.sh的换行符转换为Unix格式(LF):

  • Windows环境:用Notepad++打开脚本,选择「编辑」→「文档格式转换」→「转为Unix(LF)」,保存后重新构建。
  • Linux/macOS环境:执行命令sed -i 's/\r$//' entrypoint.sh修复换行符,再重新构建镜像。

方案2:调整ENTRYPOINT写法

直接将脚本作为可执行文件运行,避免嵌套执行的环境问题:
修改Dockerfile中的ENTRYPOINT为:

ENTRYPOINT ["/entrypoint.sh"]

确保脚本已设置可执行权限(已有RUN chmod 777 /entrypoint.sh无需额外操作),重新构建后运行即可。

方案3:ENTRYPOINT与CMD结合(扩展用法)

如果需要在脚本执行完成后自动运行指定命令,可修改entrypoint.sh末尾添加:

exec "$@"

同时修改Dockerfile:

ENTRYPOINT ["/entrypoint.sh"]
CMD ["mc"]

容器启动时会先执行脚本内容,随后自动运行mc命令。

验证

修复换行符并调整ENTRYPOINT后,重新构建运行容器,whoami会正常输出当前用户名,mc也能正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:44:55