Automatiza la actualización de tus contenedores Docker con Watchtower

Si administras contenedores Docker, sabes lo importante que es mantenerlos actualizados para evitar vulnerabilidades y aprovechar nuevas funcionalidades. Watchtower es una herramienta que simplifica este proceso, actualizando automáticamente los contenedores sin intervención manual.

En este artículo, veremos cómo configurar Watchtower con Docker Compose, cómo ejecutarlo manualmente y cómo crear un alias para facilitar su uso.

Instalación y configuración con Docker Compose

La forma más sencilla de implementar Watchtower es mediante Docker Compose. A continuación, te mostramos un archivo docker-compose.yml para configurarlo correctamente:

docker-compose.yml
------------------
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_INCLUDE_STOPPED=true
      - WATCHTOWER_INCLUDE_RESTARTING=true
      - WATCHTOWER_REVIVE_STOPPED=false
      - WATCHTOWER_SCHEDULE=0 0 2 * * *  # Ejecuta a las 2 AM diariamente
      - WATCHTOWER_DEBUG=false
      - WATCHTOWER_TIMEOUT=30s
      - WATCHTOWER_NOTIFICATIONS=shoutrrr
      - WATCHTOWER_NOTIFICATIONS_HOSTNAME=Watchtower
      - WATCHTOWER_NOTIFICATION_URL=telegram://TOKEN@telegram/?channels=ID_CANAL
      - TZ=Europe/Madrid
    network_mode: bridge

Explicación de las variables:

  • WATCHTOWER_CLEANUP=true: Elimina las imágenes antiguas después de la actualización.
  • WATCHTOWER_INCLUDE_STOPPED=true: También actualiza contenedores detenidos.
  • WATCHTOWER_INCLUDE_RESTARTING=true: Incluye contenedores en proceso de reinicio.
  • WATCHTOWER_REVIVE_STOPPED=false: No reinicia contenedores que estaban detenidos.
  • **WATCHTOWER_SCHEDULE=0 0 2 * * ***: Programa la ejecución automática a las 2:00 AM todos los días.
  • WATCHTOWER_TIMEOUT=30s: Define un tiempo de espera de 30 segundos.
  • WATCHTOWER_NOTIFICATIONS=shoutrrr: Activa las notificaciones a través de Shoutrrr.
  • WATCHTOWER_NOTIFICATIONS_HOSTNAME=Watchtower: Define el nombre del remitente en las notificaciones.
  • WATCHTOWER_NOTIFICATION_URL=telegram://TOKEN@telegram/?channels=ID_CANAL: Configura la URL para enviar notificaciones a un canal de Telegram (reemplazar TOKEN e ID_CANAL).
  • TZ=Europe/Madrid: Configura la zona horaria adecuada.

Iniciar Watchtower con Docker Compose

Para poner en marcha Watchtower, simplemente ejecuta:

docker compose up -d

Esto iniciará Watchtower en modo demonio, ejecutando actualizaciones según lo programado.

Ejecución manual de Watchtower

Si solo quieres actualizar los contenedores en un momento específico sin dejar Watchtower corriendo en segundo plano, puedes ejecutarlo de la siguiente manera:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup

Este comando hará lo siguiente:

  • –rm: Elimina el contenedor de Watchtower después de la ejecución.
  • -v /var/run/docker.sock:/var/run/docker.sock: Permite a Watchtower comunicarse con el daemon de Docker.
  • –cleanup: Elimina las imágenes antiguas después de la actualización.

Creación de un alias para facilitar la ejecución

Si ejecutas Watchtower manualmente con frecuencia, puedes crear un alias en tu terminal para simplificar el proceso.

Añade el siguiente alias a tu archivo ~/.bashrc o ~/.zshrc:

alias watchtower-update='docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup'

Luego, recarga el archivo de configuración con:

source ~/.bashrc  # O source ~/.zshrc si usas Zsh

Ahora puedes actualizar tus contenedores con un simple comando:

watchtower-update

Más información y documentación oficial

Para obtener más detalles sobre las opciones de configuración y el uso avanzado de Watchtower, consulta la documentación oficial en:

Watchtower

Conclusión

Watchtower es una herramienta poderosa y sencilla para mantener actualizados tus contenedores Docker de forma automática. Con Docker Compose puedes ejecutarlo en segundo plano, pero también puedes usarlo manualmente cuando sea necesario.

Deja un comentario