在 Debian 上运行 Docker 容器**“启动后很快退出(Exited)”,通常不是 Docker 本身的 bug,而是容器主进程(PID 1)结束运行**导致的。下面按最常见原因给你梳理。
Docker 容器不是虚拟机,容器生命周期 = 主进程生命周期
只要容器里的 第一个进程(CMD / ENTRYPOINT)退出,容器就会立刻退出。
例如:
docker run debian
默认执行:
/bin/bash
但 没有终端、没有交互,bash 立刻退出 → 容器退出。
✅ 正确方式:
docker run -it debian
或
docker run -d debian sleep infinity
❌ 错误:
docker run -d nginx service nginx start
service 是后台方式,主进程退出 → 容器退出
✅ 正确:
docker run -d nginx
(nginx 自身前台运行)
比如:
CMD ["echo", "hello"]
执行完就结束 → 容器退出(这是正常的)
✅ 想常驻:
CMD ["tail", "-f", "/dev/null"]
查看原因:
docker logs <容器ID>
常见错误:
debian:slim / debian 镜像:
❌ 错误想法:
“像服务器一样 run 服务”
✅ 正确思路:
一个容器 = 一个前台进程
Debian 默认 Docker 里不能用 systemd
❌:
docker run debian systemctl start nginx
✅: 直接运行二进制或脚本
内存不足会被 kill:
docker inspect <容器> | grep -i oom
# 看容器状态
docker ps -a
# 看退出码
docker inspect <容器> | grep ExitCode
# 看日志
docker logs <容器>
# 手动调试
docker run -it debian bash
| 退出码 | 含义 |
|---|---|
| 0 | 正常退出 |
| 1 | 应用错误 |
| 137 | 被 kill(OOM) |
| 126/127 | 命令无法执行 |
你可以贴出:
docker run 命令docker logs 输出我可以直接告诉你为什么退出、怎么改。