容器一启动就退出,关键先看状态、日志、资源:Exited (0)为正常结束,非0退出码(如1、127、137)指向命令错误、文件缺失或OOM;docker logs查stdout/stderr线索;137需检查内存限制及tmpfs配置;最后用docker run -it交互验证启动命令。
容器一启动就退出,不是配错端口就是踩了坑。关键不是马上改配置,而是先看清它为什么走——状态、日志、资源,三步就能锁定八成问题。执行 docker ps -a,找到目标容器,重点盯 STATUS 列:
docker run hello-world,这是设计如此,不用修;用 docker logs --tail 100 容器名 看最后百行输出。注意:
/var/log/xxx.log 的内容不会出现;Connection refused(连不上数据库)、No such file or directory(找不到 jar 或 bin)、Address already in use(端口被占),直接定位根因。退出码是 137 或 docker inspect 容器名 显示 "OOMKilled": true,基本就是内存超限:
dmesg | grep -i "killed process",确认内核是否杀了它;-m 或 mem_limit,数值是否太小;/tmp)如果挂了 tmpfs 却没设 size,应用写缓存失败也会静默退出——加 --tmpfs /tmp:size=512m 就能试出来。如果以上都看不出头绪,用 docker run -it 镜像名 /bin/sh 进去,手动执行启动命令(比如 nginx -t、java -jar app.jar):
--user 参数模拟。