首页/云/Docker 容器速查/docker run --init 处理信号与僵尸进程
基础命令50 条

docker run --init 处理信号与僵尸进程

在容器里注入一个 init 进程(基于 tini 的 docker-init)作为 PID 1:转发信号、回收僵尸子进程,适合把普通程序直接当主进程跑的场景。

Docker 容器速查云更新于 2026-10-12
用途为容器提供小型 init / PID 1
语法docker run --init ...
实现tini(Docker 内置 docker-init)

示例

示例
docker run -d --init --name job myjob:1.0
docker run --rm --init alpine:3.20 sh -c 'sleep 5 & wait'
主进程本身已正确实现信号处理与子进程回收(如 nginx、大多数守护程序)时不是必须加;Dockerfile 里用 ENTRYPOINT tini 效果等价。

易错点

  • 加了 --init 后容器主进程是 init,docker exec ps 看到 PID 1 不再是应用本身,排查时别误判
  • shell 脚本里后台进程收不到 SIGTERM 的问题,根因通常是脚本没转发信号,--init 只解决一部分

数据来源与参考

  • Docker 官方 CLI 参考:docker run --init(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌