docker run报standard_init_linux.go:228 exec format错误如何解决
Docker启动报错exec format error解决方案
报错原因
standard_init_linux.go:228: exec user process caused: exec format error报错的核心原因是:你在覆盖容器默认CMD时,直接传入了Python脚本路径作为启动命令,系统会将该路径视为独立的可执行二进制文件处理,但你的Python脚本没有配置可执行权限,也没有在头部声明对应解释器的shebang标记,系统无法识别该脚本的执行方式,因此抛出格式错误。
解决方法
方案1:启动时显式指定Python解释器(无需修改镜像,立即可用)
运行容器时在脚本路径前加上Python解释器声明即可,命令如下:docker run --name singada4 singada python /app/hello_cmd.py方案2:配置脚本支持直接调用(适合长期使用场景)
如果你需要后续可以直接传入脚本路径作为启动命令,可修改Dockerfile调整镜像配置:- 首先在所有Python脚本的第一行添加shebang声明:
#!/usr/bin/env python - 修改Dockerfile,给脚本添加可执行权限:
重新构建镜像后,你原来的启动命令FROM python:3.7-alpine RUN mkdir /app COPY hello_there.py hello_cmd.py /app # 新增:给Python脚本添加可执行权限 RUN chmod +x /app/*.py CMD ["python","/app/hello_there.py"]docker run --name singada4 singada /app/hello_cmd.py即可正常运行。- 首先在所有Python脚本的第一行添加shebang声明:
内容的提问来源于stack exchange,提问作者MD. Ashfaqur Rahman Tahashin
相关产品推荐
相关产品推荐

