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

启动Docker运行sh文件报session ended very soon after starting错误如何解决

Docker运行sh文件会话提前终止报错排查方案

报错原文:Docker sh error : session ended very soon after starting. Check that the command in profile "Default" is correct.

1. 检查sh文件基础合法性

  • 检查换行符格式:Windows环境下编辑的sh文件默认是CRLF换行符,Linux容器无法识别会直接执行失败,可执行dos2unix 你的脚本名称.sh转换为LF格式。
  • 检查可执行权限:给目录下所有sh文件赋予执行权限,执行chmod +x *.sh,如果是容器内挂载的文件,要注意权限映射不要限制执行权限。
  • 检查脚本首行声明:sh文件第一行必须是正确的解释器声明,比如#!/bin/sh或者#!/bin/bash,不要填写不存在的解释器路径。

2. 检查docker-compose配置

  • 验证启动命令路径:查看docker-compose.yml中的command或entrypoint字段,填写的sh脚本路径必须准确,建议使用绝对路径(比如/app/start.sh)替代相对路径,避免工作目录不匹配导致找不到文件。
  • 检查是否缺少驻留进程:如果sh脚本仅执行单次任务、没有前台运行的常驻服务,容器会随主进程退出触发报错。如需容器保持运行,可在脚本末尾添加tail -f /dev/null阻塞命令,或在docker-compose对应服务下添加tty: true、stdin_open: true配置。

3. 调试定位具体报错

  • 前台启动查看日志:不要加-d参数后台启动,直接执行docker-compose up,观察sh脚本执行过程中的实时输出,定位是命令不存在、依赖缺失还是逻辑错误。
  • 进入容器手动验证:执行docker-compose run --rm 你的服务名 /bin/sh覆盖默认启动命令进入容器,手动执行sh文件逐行验证脚本逻辑,排查执行报错点。

4. 检查Docker终端Profile配置

如果使用Docker Desktop内置终端,确认Default profile的启动命令未被篡改,默认应对应宿主系统的默认shell(如PowerShell、bash),不要填写不存在的命令路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:24:00