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

Docker运行容器执行bash脚本提示文件不存在报错如何解决

故障根因

报错本质是容器内脚本路径和执行命令的查找路径不匹配,连带存在几处冗余/错误配置:

  • 路径映射逻辑错误:COPY . /functionfibonnaci/doc-conatiner会把你本地build上下文的所有文件复制到容器的/functionfibonnaci/doc-conatiner目录下,但容器启动后的默认工作目录是根目录/,你在CMD里写的functionfibonnaci.sh是相对路径,bash只会在当前工作目录也就是/下查找脚本,自然找不到对应文件。
  • 冗余危险配置:RUN chmod 700 .执行位置是容器根目录/,给根目录设置700权限完全没有必要,还可能触发系统级目录权限异常,直接删除该行即可。
  • 拼写笔误:你创建的目录名写的是doc-conatiner(正确拼写为container,漏写了字母n),虽然和后续COPY路径拼写一致不会直接触发本次报错,但属于易混淆的笔误,建议修正。
修正方案

直接替换为如下Dockerfile即可:

FROM ubuntu

# 提前创建目标目录,-p参数保证多级目录不存在时自动创建
RUN mkdir -p /functionfibonacci/doc-container

# 仅复制需要的脚本到目标目录,避免把本地无关文件全部打入镜像
COPY functionfibonnaci.sh /functionfibonacci/doc-container/

# 给脚本添加可执行权限,避免后续执行报权限错误
RUN chmod +x /functionfibonacci/doc-container/functionfibonnaci.sh

# 明确设置工作目录,后续所有命令都基于该目录执行
WORKDIR /functionfibonacci/doc-container

# 执行脚本,写相对路径即可,也可以直接写绝对路径跳过WORKDIR配置
CMD ["bash", "./functionfibonnaci.sh"]

如果不想配置WORKDIR,直接把CMD改成绝对路径写法也可以正常运行:
CMD ["bash", "/functionfibonacci/doc-container/functionfibonnaci.sh"]

验证注意事项
  • 构建镜像前确认本地build目录(即执行docker build命令所在的目录)下确实存在functionfibonnaci.sh文件,文件名大小写、拼写完全和Dockerfile中写的一致,不要出现后缀漏写、字母拼错的问题。
  • 重新构建镜像时不要漏了最后的点:docker build -t fib-demo .
  • 构建完成后执行docker run --rm fib-demo即可正常运行脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:27:22