Watchtower: Actualiza automáticamente contenedores docker

Introducción

Últimamente ando jugando con Docker, instalando y probando diferentes contenedores (plex, nextcloud, mariadb, etc.) en la raspberry pi. Y precisamente uno de los problemas que encontraba era la de realizar las actualizaciones, ya que tenia que volver crear los contenedores de forma manual, manteniendo ficheros de configuración, carpetas de datos, etc.

La solución la encontré precisamente con otro contenedor, Watchtower, el cual se encarga de vigilar las imágenes de los contenedores que tenemos ejecutando y busca de forma automática nuevas actualizaciones en sus repositorios, y en caso de que encuentre alguna, para el contenedor y lo vuelve a crear utilizando la imagen actualizada y con las las mismas opciones con las que le creamos inicialmente.

Instalación

Podemos encontrar el repositorio de Watchtower en https://hub.docker.com/r/v2tec/watchtower/.

En mi caso quiero ejecutarlo en una raspberry pi, si te fijas en sus etiquetas disponen de una imagen para ser ejecutado en dispositivos arm

Para crear el contenedor para la raspberry pi

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  v2tec/watchtower:armhf-latest

No tendremos ninguna iteración con el contenedor, simplemente se mantendrá funcionando buscando nuevas actualizaciones.

Eliminando imágenes antiguas.

Para eliminar las imágenes antiguas de los contenedores que han sido actualizados podemos ejecutar:

docker images -q --filter "dangling=true" | xargs -n1 -r docker rmi

Ademas, puedes añadir este comando como una tarea en cron para automatizar la tarea, en el ejemplo se ejecuta todos los sábados a las 02:00 am

0 2 * * 6 /usr/bin/docker images -q --filter "dangling=true" | xargs -n1 -r docker rmi >/dev/null 2>&1
comentario powered by Disqus