我希望这个问题不会被标记为primarily opinion-based,但是对此有一个客观的答案。
primarily opinion-based
我已经阅读了介绍dumb- init的内容,这是一个用于Docker容器的初始化系统,其中广泛描述了使用原因和使用方法dumb- init。老实说,对于一个不太了解Linux流程结构工作原理的人来说,这听起来很引人注目-如果您不使用,就好像您做的事情完全是错误的dumb- init。
dumb- init
这就是为什么我正在考虑在自己的Docker映像中使用它的原因……使我无法执行此操作的原因是,我尚未找到使用它的正式Docker映像。
mongod
postgres
node
如果dumb-init是 如此 重要-为什么显然没有人使用它?我在这里想念什么?
dumb-init
如果您有一个产生新进程的进程,并且没有实现好的信号处理程序来捕获子信号并在进程应停止时停止孩子,则可以使用dumb- init或tini之类的东西。
如果您的进程没有产生新的进程(例如,Node.js),则可能没有必要。
我猜想MongoDB,PostgreSQL等可以运行子进程的实现了良好的信号处理程序。否则会有僵尸进程,有人提出了解决此问题的方法。
唯一的问题可能是官方语言图像,例如node,ruby,golang。他们没有dumb-init / tini,因为您通常不需要它们。但这取决于开发人员,该开发人员可以实施不良的子执行代码来修复信号处理程序或将辅助程序用作PID 1。