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
eID_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:
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.