Docker构建镜像执行docker_build.sh报错exit code:2,如何解决?
解决Docker构建时执行docker_build.sh退出码2的问题
1. 查看脚本执行的详细日志
退出码2通常意味着脚本内某条命令执行失败,但默认Docker构建日志不会显示脚本内部的错误细节。可以修改Dockerfile中的RUN命令,开启bash调试模式:
RUN bash -x ./docker_build.sh
重新构建时,会输出脚本每一步的执行过程,直接定位出错的命令。
2. 检查脚本权限与路径
- 确认
docker_build.sh权限:COPY指令会保留主机文件权限,若主机上该脚本无执行权限,容器内虽可通过bash调用,但建议提前添加权限设置:RUN chmod +x ./docker_build.sh - 验证脚本内路径:容器当前工作目录是
/gt_x86/x86,脚本中若引用上级目录(如../gcc、../llvm),需确保这些目录已通过COPY ./ /gt_x86复制到容器内(你的COPY指令逻辑是正确的)。
3. 手动进入容器调试
若日志仍不清晰,直接在容器内手动执行脚本:
- 修改Dockerfile,替换原RUN命令:
CMD ["bash"] - 构建调试镜像:
docker build -t debug-image . - 启动交互式容器:
docker run -it debug-image - 在容器内切换工作目录并执行脚本:
cd /gt_x86/x86 bash ./docker_build.sh
此时会直接看到脚本执行的具体错误,比如缺失依赖、命令不存在、文件找不到等。
4. 检查脚本依赖
查看docker_build.sh内容,确认它需要的工具(如gcc、python、make等)是否已在Dockerfile前序步骤中安装完成。若脚本依赖主机环境,而容器内未配置对应工具,会导致执行失败。
内容的提问来源于stack exchange,提问作者NobinPegasus
相关产品推荐
相关产品推荐

