docker run --init
是一个 Docker 命令的选项,用于在容器中运行一个初始化进程(通常是 tini
)。这个初始化进程负责处理一些 Unix 信号(如 SIGTERM 和 SIGCHLD),并确保容器中的进程能够正确地被管理和清理。
在没有 --init
选项的情况下,Docker 容器中的 PID 1 通常是你的应用程序或脚本。这可能会导致一些问题,因为 PID 1 在 Unix 系统中有一些特殊的职责,例如处理孤儿进程(orphaned processes)和重新分配终端(terminal reaping)。
当使用 --init
选项时,Docker 会在容器中运行一个小的初始化进程(tini
),这个进程会作为 PID 1 运行,并管理你的应用程序或脚本。这样,你的应用程序或脚本就不是 PID 1 了,而初始化进程会负责处理那些与 PID 1 相关的特殊任务。
这有助于避免一些常见的容器问题,例如僵尸进程(zombie processes)的积累,以及信号处理的问题。
要启用这个选项,只需在 docker run
命令中添加 --init
即可:
docker run --init your-image-name
需要注意的是,--init
选项是在 Docker 1.13 版本中引入的。如果你使用的是更早版本的 Docker,那么这个选项可能不可用。