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

Docker运行带参数Python脚本失败:传参提示找不到可执行文件

问题原因与解决方案

核心问题

你遇到的错误本质是Docker中CMD和ENTRYPOINT指令对命令行参数的处理逻辑不同:

  • 当使用CMD ["python3", "my_main.py"]时,docker run命令末尾追加的2017会完全替换整个CMD指令,Docker会尝试直接执行2017这个"可执行文件"——显然系统里没有这个命令,所以报错找不到。
  • 换成ENTRYPOINT ["python3", "my_main.py"]后,docker run末尾的参数会追加到ENTRYPOINT的命令之后,最终执行的是python3 my_main.py 2017,这正好符合你通过sys.argv获取参数的需求。

两种可行解决方案

方案1:使用ENTRYPOINT(已验证有效)

保持Dockerfile中的ENTRYPOINT配置:

ENTRYPOINT ["python3", "my_main.py"]

之后执行docker run时直接追加参数即可:

docker run --rm -v /mnt/c/host_path1:/app/container_path1 -v  /mnt/c/host_path2:/app/container_path2 -v /mnt/c/host_path3:/app/container_path3 my_image 2017

方案2:保留CMD,明确指定完整执行命令

如果不想修改Dockerfile的CMD,可以在docker run时直接写出完整的执行命令,避免参数替换CMD:

docker run --rm -v /mnt/c/host_path1:/app/container_path1 -v  /mnt/c/host_path2:/app/container_path2 -v /mnt/c/host_path3:/app/container_path3 my_image python3 my_main.py 2017

补充说明

不传参数时CMD能正常运行,是因为Docker直接执行python3 my_main.py,匹配你的脚本无参数时的默认逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:40:07