Etiqueta: – Actualizaciones Docker

  • Watchtower: cómo actualizar automáticamente tus contenedores Docker en un Home Server

    Watchtower: cómo actualizar automáticamente tus contenedores Docker en un Home Server

    Introducción

    Cuando administramos un Home Server con Docker, una de las tareas que debemos realizar periódicamente es mantener actualizados nuestros contenedores.

    Servicios como Jellyfin, Nextcloud, Home Assistant, Uptime Kuma o WordPress reciben actualizaciones que incorporan nuevas funcionalidades, correcciones de errores y mejoras de seguridad.

    Sin embargo, actualizar cada contenedor manualmente puede convertirse en una tarea repetitiva, especialmente cuando tenemos varios servicios funcionando en nuestro servidor.

    Aquí es donde entra Watchtower, una herramienta que permite automatizar la detección de nuevas versiones de imágenes Docker y actualizar los contenedores cuando existen versiones disponibles.

    En este artículo veremos qué es Watchtower, cómo funciona, cómo instalarlo utilizando Docker Compose y cómo configurarlo para realizar actualizaciones programadas.

    1. ¿Qué es Watchtower?

    Watchtower es una herramienta de código abierto diseñada para supervisar y actualizar automáticamente contenedores Docker.

    Su funcionamiento consiste en comprobar periódicamente si existen nuevas versiones de las imágenes utilizadas por nuestros contenedores.

    Cuando detecta una actualización, puede realizar automáticamente las siguientes operaciones:

    1. Detectar que existe una nueva versión de la imagen Docker.
    2. Descargar la nueva imagen desde el repositorio correspondiente.
    3. Detener el contenedor que utiliza la versión anterior.
    4. Crear nuevamente el contenedor utilizando la imagen actualizada.
    5. Conservar la configuración original del contenedor, incluyendo variables de entorno, puertos, redes y volúmenes configurados.

    De esta manera, no necesitamos conectarnos constantemente al servidor para comprobar y actualizar manualmente cada servicio.

    Importante: Watchtower no actualiza el sistema operativo ni los paquetes de Ubuntu. Su función se limita a administrar las actualizaciones de las imágenes de los contenedores Docker.

    2. ¿Para qué sirve Watchtower?

    Su principal objetivo es simplificar el mantenimiento de un entorno Docker.

    Imaginemos que tenemos cinco servicios instalados en nuestro Home Server:

    • Jellyfin para administrar nuestra biblioteca multimedia.
    • Uptime Kuma para supervisar la disponibilidad de los servicios.
    • Home Assistant para automatización del hogar.
    • Calibre-Web para administrar libros electrónicos.
    • WordPress para alojar nuestro sitio web.

    Sin una herramienta de automatización, tendríamos que comprobar periódicamente si existen nuevas imágenes y actualizar los contenedores manualmente.

    Con Watchtower podemos automatizar este proceso y establecer un horario para realizar las comprobaciones.

    Esto resulta especialmente útil cuando administramos varios servicios y queremos reducir las tareas de mantenimiento.

    3. Principales funcionalidades

    Actualizaciones automáticas

    Comprueba si existen nuevas versiones de las imágenes Docker y puede actualizar los contenedores automáticamente.

    Actualizaciones programadas

    Permite definir intervalos de comprobación o utilizar expresiones cron para establecer días y horarios específicos.

    Exclusión de contenedores

    Permite evitar que determinados servicios sean actualizados automáticamente mediante etiquetas de Docker.

    Limpieza de imágenes antiguas

    Con la opción Cleanup puede eliminar las imágenes anteriores después de completar una actualización, ayudando a evitar la acumulación de imágenes que ya no se utilizan.

    Notificaciones

    Permite configurar notificaciones para conocer cuándo se detectan o realizan actualizaciones, utilizando los mecanismos de notificación compatibles.

    4. Requisitos previos

    Antes de instalar Watchtower necesitamos:

    • Un servidor Linux, Windows o cualquier sistema compatible con Docker.
    • Docker Engine instalado y funcionando.
    • Docker Compose.
    • Acceso administrativo al servidor.
    • Conexión a Internet para descargar las imágenes.

    También es recomendable tener configurado un sistema de respaldos para los servicios y sus bases de datos.

    5. Instalación de Watchtower con Docker Compose

    Watchtower funciona como un contenedor Docker independiente y necesita comunicarse con el motor Docker del servidor.

    Para ello utiliza el socket:

    /var/run/docker.sock

    Este socket permite que Watchtower consulte y administre los contenedores del servidor.

    Nota sobre el proyecto: el repositorio original containrrr/watchtower fue archivado el 17 de diciembre de 2025. Para una instalación nueva, este tutorial utiliza la continuación comunitaria nickfedor/watchtower. Es importante comprobar el estado y la procedencia de las imágenes antes de instalarlas.

    Paso 1. Crear el directorio

    Nos conectamos al servidor mediante SSH y creamos el directorio donde almacenaremos la configuración:

    mkdir -p ~/docker/watchtower
    cd ~/docker/watchtower

    Paso 2. Crear el archivo Docker Compose

    Creamos el archivo de configuración:

    nano docker-compose.yml

    Agregamos el siguiente contenido:

    services:
      watchtower:
        image: nickfedor/watchtower:latest
        container_name: watchtower
        restart: unless-stopped
    
        environment:
          TZ: America/Mexico_City
          WATCHTOWER_SCHEDULE: "0 0 4 * * *"
          WATCHTOWER_CLEANUP: "true"
    
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock

    Guardamos los cambios.

    Paso 3. Iniciar Watchtower

    Ejecutamos:

    docker compose up -d

    Comprobamos que el contenedor esté funcionando:

    docker ps --filter name=watchtower

    Si aparece con estado Up, el contenedor se encuentra en ejecución.

    6. Configurar actualizaciones programadas

    Una de las características más útiles de Watchtower es la posibilidad de establecer un horario específico para comprobar actualizaciones.

    En nuestro ejemplo utilizamos:

    WATCHTOWER_SCHEDULE: "0 0 4 * * *"

    Esta expresión indica que Watchtower realizará sus comprobaciones todos los días a las 04:00:00 horas.

    Es importante tener en cuenta que Watchtower utiliza una expresión cron de seis campos:

    CampoValorSignificado
    Segundos0Segundo cero
    Minutos0Minuto cero
    Horas4Cuatro de la mañana
    Día del mes*Todos los días
    Mes*Todos los meses
    Día de la semana*Todos los días de la semana

    También configuramos:

    TZ: America/Mexico_City

    Esto permite que el horario programado y los registros utilicen la zona horaria de Ciudad de México.

    7. Cómo excluir contenedores de las actualizaciones

    No siempre es recomendable actualizar automáticamente todos los servicios.

    Por ejemplo, podemos tener una aplicación que funciona correctamente y preferimos actualizar manualmente después de revisar las notas de cada versión.

    Watchtower permite excluir contenedores utilizando etiquetas de Docker.

    Para excluir un servicio, agregamos la siguiente etiqueta en su archivo Docker Compose:

    labels:
      - "com.centurylinklabs.watchtower.enable=false"

    Por ejemplo:

    services:
      wordpress:
        image: wordpress:php8.3-apache
        container_name: wordpress-web
    
        labels:
          - "com.centurylinklabs.watchtower.enable=false"

    Con esta configuración, Watchtower omitirá ese contenedor durante sus actualizaciones automáticas.

    Esta funcionalidad es especialmente útil para servicios importantes, bases de datos y aplicaciones que requieren una validación previa antes de actualizarse.

    8. Cómo comprobar los registros de Watchtower

    Podemos consultar los registros del contenedor para comprobar si está funcionando correctamente:

    docker logs watchtower

    Para visualizar los registros en tiempo real:

    docker logs -f watchtower

    También podemos comprobar cuándo se realizó la última ejecución y si se encontraron imágenes nuevas.

    Si queremos salir de la visualización en tiempo real, presionamos Ctrl + C. Esto no detiene el contenedor.

    9. Buenas prácticas y recomendaciones

    Aunque Watchtower facilita el mantenimiento de Docker, es importante considerar algunos aspectos antes de habilitar actualizaciones automáticas.

    Realizar respaldos periódicos.

    Antes de actualizar servicios importantes, debemos contar con respaldos de sus configuraciones y bases de datos.

    No actualizar todo sin supervisión.

    Las nuevas versiones pueden introducir cambios incompatibles. Es recomendable excluir los servicios críticos o utilizar un proceso de actualización manual para ellos.

    Evitar depender exclusivamente de la etiqueta latest.

    Es conveniente revisar qué versiones y etiquetas utilizan nuestros contenedores, especialmente cuando necesitamos mantener una versión específica.

    Proteger el acceso al socket de Docker.

    El acceso a /var/run/docker.sock proporciona un nivel de control muy elevado sobre Docker y, en la práctica, puede equivaler a privilegios administrativos sobre el servidor. No debemos exponerlo a redes o usuarios no confiables.

    Revisar los registros después de las actualizaciones.

    Una actualización exitosa no garantiza que la aplicación funcione correctamente. Debemos comprobar que los servicios continúen operativos.

    No confundir actualización con respaldo.

    Watchtower no crea copias de seguridad ni garantiza que podamos regresar automáticamente a una versión anterior.

    10. Conclusión

    Watchtower es una herramienta interesante para quienes administramos un Home Server con múltiples servicios Docker.

    Su capacidad para detectar nuevas imágenes, programar actualizaciones y excluir determinados contenedores permite simplificar considerablemente las tareas de mantenimiento.

    Sin embargo, la automatización debe utilizarse con precaución. No todos los servicios deberían actualizarse sin supervisión, especialmente aquellos que almacenan información importante.

    La mejor estrategia es combinar Watchtower con respaldos periódicos, supervisión de los contenedores y actualizaciones controladas para los servicios críticos.

    Así podemos mantener nuestro Home Server actualizado sin perder el control sobre los servicios que tenemos funcionando.

    Documentación de Watchtower

    Repositorio GitHub de la continuación comunitaria

    Repositorio original y aviso de archivado

    Configuración de parámetros y programación