El contenedor Docker con Samba sale sin ningún mensaje

8

Tenemos un servidor que ejecuta CentOS, en el que hay varios servicios en contenedores Docker para separarlos de los cambios de host.

La semana pasada, el viernes, ejecutamos una actualización en CentOS, y desde entonces uno de nuestros servicios se inicia y se cierra de inmediato. Los otros 15+ servicios están bien.

Cloné la configuración del contenedor, cambié el nombre del contenedor y reconstruí con el mismo problema: el contenedor se inicia y luego sale sin ningún mensaje.

El contenedor se deriva del contenedor de samba de David Personette . El comando real que sale ahora pero que no solía ser es:

exec ionice -c 3 smbd -FS

¿Debo degradar la ventana acoplable que tendrá efectos secundarios? ¿Hay algo más que pueda hacer para que esto vuelva a funcionar? Elegimos contenedores para abstraer del sistema operativo, ¿esa abstracción no es tan buena como se esperaba?

Juan
fuente
¿Qué sucede si ejecuta un shell en el contenedor y luego ejecuta ese comando manualmente?
jordanm
Tuve dificultades para intentar eso, el contenedor tiene un punto de entrada y requiere parámetros de línea de comandos para comenzar. Y si funcionara, no tendría idea de cómo usar eso en la producción, ¿es eso posible?
John

Respuestas:

8

El contenedor saldrá sin ningún comentario, a menos que aumente el nivel de depuración. Puedes usar algo como --debuglevel=4.

Una vez que haga eso, reconstruya y reinicie el contenedor, al final obtendrá algo como:

Server exit (EOF on stdin)

Y eso apunta a la solución, cambie la smbdinvocación a:

exec ionice -c 3 smbd -FS < /dev/null

y su contenedor ya no debería salir directamente.

No estoy seguro de qué causa este cambio incompatible con versiones anteriores, ni por qué esto no se probó con las entradas existentes de dockerhub.

También tuve que romper dos de mis contenedores al actualizar a 1.11. y al bajar a 1.10.3, se topó con el temido Cannot stop container .... Container does not exist: container destroyederror. Tuve que detener Docker, borrar todo el historial, por lo que realmente no puedo recomendar eso.

Anthon
fuente
¡Esto me ayudó a resolver el problema ayer, sin tener que rebajar!
juan
1
Leí en alguna parte que la detención de Samba es en realidad una característica. Intenta detectar si su proceso padre ha muerto (EOF en stdin). Tu solución funciona perfectamente.
Martin