dgongut / docker-controller-bot

Bot de telegram para controlar los contenedores docker de tu servidor
GNU General Public License v3.0
139 stars 21 forks source link

Error al actualizar algunos contenedores #19

Open brais10 opened 8 months ago

brais10 commented 8 months ago

Buenos días, en primer lugar me gustaría darte las gracias por el trabajo, el bot funciona de maravilla y me está siendo muy útil. El problema que me he encontrado es al actualizar ciertos contenedores. Lo que ocurre es que me dice que lo actualizó correctamente pero al momento empieza para y arrancar el contenedor constantemente y tengo que acabar eliminándolo. Me ha ocurrido solamente con unos contenedores basados en una imagen de ubuntu y además son los únicos contenedores que tengo que comparten imagen. Para el resto de imágenes tengo solamente un contenedor, pero en ese caso son varios los que se nutren de la imagen de ubuntu, por lo que no sé si por ahí pueden ir los tiros. Además, cuando me encuentro con este problema, si exporto el contenedor que no está funcionando en un .json (a través del container manager de synology) y lo vuelvo a importar, entonces si que vuelve a funcionar correctamente. Si necesitas más información, estaré encantado de proporcionártela. Muchas gracias.

dgongut commented 7 months ago

Muy buenas! Disculpa la tardanza he tenido un mes muy muy movidito y ya puedo volver a la carga con el proyecto.

En primer lugar me gustaría que mostraras los logs con el problema, si ha fallado la actualización debería poner el motivo del fallo en los logs del bot, es el primer paso para poder solucionarlo o ver lo que puede estar ocurriendo. 👍

Muchas gracias por tu comprensión.

Saludos.

brais10 commented 7 months ago

Muchas gracias por la respuesta, nada que disculpar, faltaría más!

Ahora mismo no soy capaz de reproducir el problema de forma artificial, pero en cuanto vuelva a aparecer una actualización de la imagen de ubuntu, vuelvo a actualizar y te comento si sigo teniendo el problema.

Cuál sería la mejor forma de pasarte los logs? Accediendo directamente al contenedor desde container manager (en dsm) no me muestra nada en la pestaña de logs (para otros contenedores que tengo instalados sí me aparece ahí un log) image

Un saludo y gracias por tu trabajo!

dgongut commented 7 months ago

Para que ahí aparezcan los logs, puse en el docker-compose lo de tty: true.

Si no te aparecen vuelve a lanzar el docker-compose porque deberían salir sin duda:

image

Una vez hecho eso lo más sencillo si no te quieres complicar es ejecutar en el bot el comando /logfile y pulsar en el mismo bot 👍🏻

Saludos y gracias a ti por comentar!

brais10 commented 7 months ago

Genial, ya consigo ver los logs! En cuanto vuelva a tener una actualización de ubuntu ya escribo por aquí, tanto si se repite el error como si no

brais10 commented 7 months ago

Buenas, ya he encontrado el problema, gracias a ver los logs. Básicamente lo que ocurre es que cuando una imagen está asociada a varios contenedores e intento actualizar uno de ellos, el bot da error al borrar la imagen antigua para reemplazarla por la nueva, ya que la antigua está siendo utilizada por otros contenedores. En mi caso me serviría que se actualizasen todos los asociados a esa imagen de golpe, pero igual se te ocurre la forma de implementarlo para que se puedan actualizar selectivamente.

Te dejo por aquí los logs con el error. Si te puedo echar una mano o necesitas más información dime!

2024-04-16 15:25:20 - DEBUG: Updating container rclone-ubuntu 2024-04-16 15:25:20 - DEBUG: Pulling image [ubuntu:latest] 2024-04-16 15:25:33 - DEBUG: ubuntu:latest pull completed 2024-04-16 15:25:33 - DEBUG: Container rclone-ubuntu is running. It will be stopped. 2024-04-16 15:25:50 - DEBUG: Renaming old container before deleting [rclone-ubuntu] -> [rclone-ubuntu_old] 2024-04-16 15:25:50 - DEBUG: Creating the container with the new image [7af9b] 2024-04-16 15:25:53 - DEBUG: Container rclone-ubuntu updated. 2024-04-16 15:25:53 - DEBUG: The container was previously started, I start it. 2024-04-16 15:25:59 - DEBUG: Deleting old container rclone-ubuntu 2024-04-16 15:26:17 - DEBUG: Deleting image [ca2b0] 2024-04-16 15:26:17 - DEBUG: Local image of rclone-ubuntu cannot be deleted. Reason: [409 Client Error for http+docker://localhost/v1.41/images/sha256:ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459?force=False&noprune=False: Conflict ("conflict: unable to delete ca2b0f26964c (cannot be forced) - image is being used by running container 97bf5df396fc")]

dgongut commented 6 months ago

No pasa nada si no puede eliminar la imagen al estar usándose por otros contenedores, está contemplado, el programa continua sin fallos, por eso está marcado como DEBUG y no como ERROR.

El fallo en la actualización ha de venir de otro sitio 🤔

brais10 commented 6 months ago

Cierto, no me fije es que estaba marcado como DEBUG. Pues por lo que veo el bot funciona correctamente sin ningún error, simplemente luego esos contenedores luego no me inician. Estoy intentando diagnosticar el error de por qué no inician correctamente pero no soy capaz de hacerlo, ya que cuando hago un docker start al momento se para y el docker logs no muestra nada.

Si quieres puedes cerrar esto, ya que puede que sea algún problema de como tengo yo configurado esos contenedores, pues el bot parece que hace la actualización correctamente. Muchas gracias!

yeraycito commented 6 months ago

Comentario hecho por un conocido mio por si te sirve de ayuda:

Captura
dgongut commented 6 months ago

Sin los logs poco puedo hacer 😅

gvelox commented 6 months ago

Buenas tardes,

Soy el chico que comentaba @yeraycito y te paso el log:

2024-04-18 17:51:41 - DEBUG: Actualizando contenedor nginx-nginx-1 2024-04-18 17:51:41 - DEBUG: Haciendo pull de la imagen [nginx:latest] 2024-04-18 17:51:45 - DEBUG: Pull de nginx:latest completado 2024-04-18 17:51:45 - DEBUG: El contenedor nginx-nginx-1 está en ejecución. Se detendrá. 2024-04-18 17:51:46 - DEBUG: Renombrando antiguo contenedor antes de eliminarlo [nginx-nginx-1] -> [nginx-nginx-1_old] 2024-04-18 17:51:46 - DEBUG: Creando el contenedor con la nueva imagen [2ac75] 2024-04-18 17:51:46 - DEBUG: Contenedor nginx-nginx-1 actualizado. 2024-04-18 17:51:46 - DEBUG: El contenedor estaba iniciado anteriormente, lo inicio. 2024-04-18 17:51:46 - DEBUG: Eliminando contenedor antiguo nginx-nginx-1 2024-04-18 17:51:46 - DEBUG: Eliminando la imagen [c613f] 2024-04-18 17:51:46 - DEBUG: La imagen local de nginx-nginx-1 no puede eliminarse. Motivo: [409 Client Error for http+docker://localhost/v1.45/images/sha256:c613f16b664244b150d1c3644cbc387ec1fe8376377f9419992280eb4a82ff3b?force=False&noprune=False: Conflict ("conflict: unable to delete c613f16b6642 (cannot be forced) - image is being used by running container a8e5ca9ed083")]

Y si ahora vuelves a cargar la web, sale como si acabases de instalar el nginx, el welcome to nginx en vez de salir la web, en portainer, elimina la parte de los volumenes, lo actualiza en la raiz de docker, como si lo instalara sin indicar volumenes.

Tengo que ir al stack y volver a cargarlo cuando entonces, si que me mantiene el compose y los volumenes.

Saludos,

dgongut commented 6 months ago

¿Podrías pasarme por privado si quieres, el docker-compose? Es para ver cómo está definido el contenedor y replicar el problema.