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

Docker运行容器报错OCI runtime create failed找不到split_csv.py排查

报错根因
  • 启动命令参数逻辑错误:docker run <镜像名> 后续内容的语法中,镜像名后的所有字段会完全覆盖Dockerfile中定义的CMD指令,作为容器的1号进程直接执行。你写的启动命令会让容器直接查找系统$PATH下名为split_csv.py的可执行文件运行,而不是调用python解释器执行该脚本——该脚本本身不是注册到PATH的可执行程序,自然触发找不到文件的报错。
  • Dockerfile路径配置错误:你通过WORKDIR /docker_task2设置了容器内的工作目录后,后续所有相对路径都会基于该目录解析。你写的COPY split_csv.py ./docker_task2实际会把脚本复制到/docker_task2/docker_task2/split_csv.py,而非工作目录根路径,就算命令写对也会找不到脚本。另外你注释掉的ENTRYPOINT写法不符合exec格式要求,数组的每个元素必须是单独的字符串,不能把整段命令塞到一个数组项里。
修复步骤
  1. 修正Dockerfile配置
    删除冗余的复制指令,修正文件复制路径,调整ENTRYPOINT和CMD的写法,固定python解释器为执行入口,默认参数放在CMD中方便自定义覆盖,修正后的内容如下:
FROM python:latest

WORKDIR /docker_task2

ENV PORT 80

# WORKDIR已指向/docker_task2,直接复制文件到当前目录即可
COPY split_csv.py .
COPY test_data.csv .

# 固定执行入口为python调用目标脚本
ENTRYPOINT ["python", "split_csv.py"]
# 配置默认运行参数,启动时传参可直接覆盖
CMD ["-i", "test_data.csv", "-o", "test_data.csv", "-r", "100"]
  1. 重新构建镜像
    在Dockerfile所在目录执行构建命令:
    docker build -t splitter .
  2. 调整启动命令
    镜像名后不需要再写脚本名,直接传入需要的参数即可,如果使用默认参数甚至可以省略后续参数:
# 自定义参数启动
docker run splitter -i test_data.csv -o test_data.csv -r 100

# 使用默认参数直接启动
docker run splitter

补充说明:如果需要直接运行split_csv.py而非通过python显式调用,需要在脚本首行添加shebang声明#!/usr/bin/env python,构建时给脚本加可执行权限,同时将脚本放到$PATH包含的目录下,对于普通python脚本场景,显式调用解释器的方式更简单稳定,不需要额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:27:17