run - docker start
¿Qué tan crítico es dumb-init para Docker? (1)
Espero que esta pregunta no se marque primarily opinion-based
como primarily opinion-based
, sino que haya una respuesta objetiva.
He leído Introducción a dumb-init, un sistema init para contenedores Docker , que describe ampliamente por qué y cómo usar dumb-init
. Para ser honesto, para alguien que no tiene demasiada experiencia en cómo funciona la estructura del proceso de Linux, esto suena bastante dramático, y se siente como si estuvieras haciendo las cosas completamente mal si no usas dumb-init
.
Es por eso que estoy pensando en usarlo en mis propias imágenes de Docker ... lo que me impide hacer esto es el hecho de que todavía no he encontrado una imagen oficial de Docker que la use.
- Tomemos el mongo como ejemplo: llaman directamente a
mongod
. - Tome postgres como ejemplo: llaman directamente a
postgres
. - Toma el node como ejemplo: llaman al
node
directamente. - ...
Si dumb-init
es tan importante, ¿por qué aparentemente nadie lo usa? ¿Que me estoy perdiendo aqui?
Se puede usar algo como dumb-init o tini si tiene un proceso que genera nuevos procesos y no tiene implementados buenos controladores de señales para captar las señales del niño y detener a su hijo si se debe detener el proceso, etc.
Si su proceso no genera nuevos procesos (por ejemplo, Node.js), puede que esto no sea necesario.
Supongo que MongoDB, PostgreSQL, ... que pueden ejecutar procesos secundarios tienen implementados buenos manejadores de señales. De lo contrario, habría habido procesos zombie y alguien había presentado un problema para solucionarlo.
El único problema puede ser el idioma oficial, como node, ruby, golang. No tienen dumb-init / tini ya que normalmente no los necesitas. Pero depende del desarrollador el que puede implementar un código de ejecución infantil incorrecto para corregir los controladores de señal o usar el ayudante como PID 1.