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

执行Docker run命令时出现OCI运行时创建失败错误,求排查解决

Docker OCI Runtime Create Failed 问题排查与解决

问题背景

Dockerfile 内容

FROM ubuntu:latest

WORKDIR /app

COPY gencsv.sh /app/gencsv.sh

RUN chmod +x /app/gencsv.sh

CMD ["/bin/bash", "/app/gencsv.sh"]

执行的 Docker Run 命令

docker run -dp 9393:9393 -v "$(pwd)/inputFile:/app/inputFile" input  2 8 

错误提示

docker: Error response from daemon: OCI runtime create failed


排查与解决方法

1. 参数传递方式错误

Docker Run 命令中,镜像名 input 后的 2 和 8 会直接覆盖 CMD 定义的启动命令,导致容器尝试执行 input 2 8(而非脚本),这是核心问题之一。

解决:

  • 方案一:修改 Dockerfile 使用 ENTRYPOINT
    修改后的 Dockerfile:

    FROM ubuntu:latest
    
    WORKDIR /app
    
    COPY gencsv.sh /app/gencsv.sh
    
    RUN chmod +x /app/gencsv.sh
    
    ENTRYPOINT ["/bin/bash", "/app/gencsv.sh"]
    

    重新构建镜像:

    docker build -t input .
    

    再执行原 Run 命令,参数会自动传递给脚本:

    docker run -dp 9393:9393 -v "$(pwd)/inputFile:/app/inputFile" input 2 8
    
  • 方案二:不修改 Dockerfile,直接指定完整命令

    docker run -dp 9393:9393 -v "$(pwd)/inputFile:/app/inputFile" input /bin/bash /app/gencsv.sh 2 8
    

2. 挂载的文件/目录异常

-v "$(pwd)/inputFile:/app/inputFile" 中,若宿主机当前目录下不存在 inputFile,Docker 会自动创建一个目录。如果 gencsv.sh 脚本期望读取的是文件,会直接导致脚本执行失败,进而触发 OCI 错误。

解决:

  • 若脚本需要读取文件,先在宿主机创建:
    touch $(pwd)/inputFile
    
  • 若脚本需要目录,创建目录:
    mkdir -p $(pwd)/inputFile
    

3. 脚本本身存在错误

如果 gencsv.sh 有语法错误,或者依赖的工具在 ubuntu 镜像中未安装(比如默认没有 csvkit 这类工具),会导致容器启动失败。

解决:

  • 进入容器手动调试脚本:
    docker run -it -v "$(pwd)/inputFile:/app/inputFile" input /bin/bash
    # 手动执行脚本看报错
    /app/gencsv.sh 2 8
    
  • 若缺少依赖,在 Dockerfile 中添加安装命令,例如:
    RUN apt-get update && apt-get install -y csvkit
    
    重新构建镜像即可。

4. 冗余端口映射(非直接错误,但需优化)

从脚本功能看,它是生成 CSV 文件,并没有监听端口,-p 9393:9393 完全多余,可移除避免混淆:

docker run -d -v "$(pwd)/inputFile:/app/inputFile" input 2 8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:35:15