El artículo de XDA sobre anclar imágenes de Docker a latest es una lección que cada operador de homelab aprende de la manera difícil: latest se mueve sin preguntar, y un pull fallido puede romper un stack que no puedes revertir. Las herramientas a continuación te dan el camino intermedio: notificaciones sobre imágenes nuevas, anclado a etiquetas reales y actualizaciones en un cronograma que controlas. Siete opciones en Docker, Podman, Compose, Swarm y Kubernetes.
Qué buscar en una actualización automática de contenedores
La opción correcta depende de la escala, no de la preferencia. Considera:
- Notificación vs auto-aplicar. Las herramientas de solo notificación te permiten decidir cuándo actualizar. Las herramientas de auto-aplicar se actualizan en su propio cronograma.
- Política de etiquetas. Extracciones de
latestgeneralizadas, anclado consciente de semver, o bumps basados en PR estilo Renovate. - Soporte de reversión. Una herramienta que mantenga la imagen anterior vale el disco extra.
- Objetivos de notificación. Slack, Discord, email, Gotify, ntfy, o nada.
- Tamaño de la flota. Un host está bien para Watchtower. Cien hosts quieren Renovate u un operador de Kubernetes.
Comparación rápida
| Aplicación | Mejor para | Runtime | Gratis | Notificaciones | Auto-aplicar |
|---|---|---|---|---|---|
| Watchtower | Hosts homelab solitarios | Docker | Sí | Sí | Sí |
| Diun | Solo notificación, sin auto-aplicar | Docker, Podman, Kubernetes | Sí | Sí | No |
| Ouroboros | Alternativa antigua de Watchtower | Docker | Sí | Sí | Sí |
| Podman auto-update | Systemd Podman nativo | Podman | Sí | No | Sí |
| Shepherd | Servicios Docker Swarm | Docker Swarm | Sí | No | Sí |
| Renovate | Compose o Kubernetes gestionados por GitOps | Cualquiera (via git) | Sí (código abierto) | Sí | Vía PRs |
| Portainer | Actualizaciones manuales con GUI | Docker, Swarm, Kubernetes | Free CE | Sí | Sí |
1. Watchtower, la mejor opción predeterminada para un host Docker único
Watchtower es un contenedor Docker que vigila tus otros contenedores Docker. Cuando se envía una etiqueta de imagen nueva al registro, Watchtower la extrae, recrea el contenedor con la misma configuración y limpia la imagen antigua. Agrega una etiqueta a un contenedor para activarlo o desactivarlo.
Es el iniciador predeterminado para un host Docker doméstico porque requiere un bloque Docker Compose de dos líneas para configurar y hace exactamente una cosa bien.
Dónde no está a la altura: Watchtower asume latest o una etiqueta mutable. Si anclas a 1.2.3, no pasará a 1.2.4 por su cuenta. Sin reversión. El proyecto ascendente se ha ralentizado; los forks (basados en WOL, parcheados de seguridad) son comunes.
Precio: Gratis y de código abierto (Apache 2.0).
Plataformas: Cualquier host que ejecute Docker (Windows, macOS, Linux, ARM).
Descargar: containrrr.dev/watchtower · GitHub
En resumen: La opción correcta para un host Docker personal, con la advertencia de que no debes apuntarlo a servicios de producción que no puedas permitirte romper.
2. Diun, la mejor opción de solo notificación
Diun vigila las etiquetas de imagen en tu registro y envía una notificación cuando hay un nuevo digest disponible. Nunca extrae, nunca recrea, nunca toca tus contenedores. Obtienes un ping de Discord o una notificación de Gotify, y actualizas según tus términos.
La razón para elegirlo es el control. El auto-aplicar de Watchtower se mueve más rápido de lo que la mayoría quiere; Diun mantiene a los humanos en el bucle.
Dónde no está a la altura: Aún tienes que ejecutar docker compose pull && docker compose up -d manualmente.
Precio: Gratis y de código abierto (MIT).
Plataformas: Cualquier host con Docker, Podman o un cluster de Kubernetes.
Descargar: crazymax.dev/diun · GitHub
En resumen: La opción correcta cuando quieres saber sobre actualizaciones pero no aplicarlas automáticamente.
3. Ouroboros, la mejor alternativa antigua de Watchtower
Ouroboros es una alternativa basada en Python de Watchtower que precede a Watchtower y hace el mismo trabajo básico: extraer, recrear, podar. Algunos homelab-bers se quedan en Ouroboros porque su configuración es más cercana a lo que escribieron hace años.
El desarrollo es lento pero estable. Los usuarios nuevos deben comenzar con Watchtower o Diun.
Dónde no está a la altura: Cadencia de versión más lenta que las alternativas. El conjunto de características está esencialmente congelado.
Precio: Gratis y de código abierto (MIT).
Plataformas: Cualquier host que ejecute Docker.
Descargar: GitHub
En resumen: Está bien si ya lo ejecutas. De lo contrario, Watchtower o Diun.
4. Podman auto-update, la mejor opción nativa de Podman
Podman viene con podman auto-update, un subcomando que lee una etiqueta en cada contenedor y extrae imágenes frescas en un timer de systemd. Sin contenedor sidecar, sin herramienta de terceros. Se integra con Quadlet (generador de Podman para systemd) para definiciones de servicio declarativas.
La razón para elegirlo es que si ejecutas Podman sin root en RHEL, Fedora o un Debian moderno, la ruta de actualización automática ya existe en el SO.
Dónde no está a la altura: Solo Podman. Sin notificación integrada.
Precio: Gratis y de código abierto (Apache 2.0).
Plataformas: Linux (Podman).
Descargar: Documentación en docs.podman.io
En resumen: La opción nativa en hosts Podman. Sin herramienta nueva requerida.
5. Shepherd, la mejor para Docker Swarm
Shepherd vigila los servicios de Docker Swarm (no contenedores autónomos) y rueda servicios cuando su etiqueta de imagen tiene un nuevo digest. Respeta la estrategia de actualización rodante de Swarm, lo que significa que juega bien con los health-checks y el paralelismo de actualización.
Muy poca gente aún ejecuta Swarm a escala, pero para los que lo hacen, Shepherd es el actualizador automático construido para el modelo de Swarm.
Dónde no está a la altura: Solo Swarm. Sin uso fuera de un cluster de Swarm.
Precio: Gratis y de código abierto (MIT).
Plataformas: Docker Swarm (hosts Linux).
Descargar: GitHub
En resumen: La opción correcta dentro de un Docker Swarm.
6. Renovate, el mejor enfoque GitOps
Renovate es un bot que abre pull requests en tu repo de git cuando una etiqueta de imagen tiene una actualización. Funciona en archivos Compose, manifiestos de Kubernetes, gráficos Helm, Dockerfiles, GitHub Actions y docenas de objetivos más. El PR incluye notas de versión, enlaces del registro de cambios y una verificación de que la etiqueta nueva realmente existe.
La razón para elegirlo es que las actualizaciones se convierten en cambios de código. Las revisas, las fusionas y CI aplica la actualización. La reversión es un git revert. Este es el patrón que la mayoría de los equipos de producción adoptan.
Dónde no está a la altura: Requiere un pipeline de implementación basado en git. No es adecuado para un homelab que no usa CI.
Precio: Gratis autohospedado (Apache 2.0). El servicio gestionado (Mend) también es gratis para código abierto y equipos pequeños.
Plataformas: GitHub, GitLab, Bitbucket, git autohospedado.
Descargar: renovatebot.com · GitHub
En resumen: La opción correcta cuando tu infraestructura está definida en git.
7. Portainer, la mejor actualización manual basada en GUI
Portainer es un panel de control de gestión de Docker/Swarm/Kubernetes. Muestra cada contenedor y cada imagen, marca cuando hay una imagen nueva disponible y te permite recrear el contenedor con el pull fresco con dos clics. Community Edition es gratis; Business Edition añade RBAC, escaneo de imágenes y más.
La razón para elegirlo es que algunas actualizaciones son decisiones únicas que deseas tomar desde una interfaz de usuario en lugar de un archivo de configuración.
Dónde no está a la altura: No completamente automatizado. Tú eres el actualizador automático; Portainer solo te da el botón.
Precio: Community Edition gratis. Business Edition de pago.
Plataformas: Docker, Swarm, Kubernetes (autohospedado).
Descargar: portainer.io · GitHub
En resumen: La opción para flujos de trabajo de clic a actualizar y flotas mixtas.
Cómo elegir
- Host Docker único, homelab: Watchtower.
- Lo mismo, pero quieres una cabeza arriba, no auto-aplicar: Diun.
- Ejecutas Podman:
podman auto-update. - Docker Swarm: Shepherd.
- Kubernetes o Compose en git: Renovate.
- Prefieres un panel: Portainer.
FAQ
¿Es seguro ejecutar Watchtower contra producción?
No sin una política de etiquetas cuidadosa. Apuntarlo a :latest y puede romper tu stack en cualquier error ascendente. Apuntarlo a etiquetas ancladas por semver y añade rollback basado en health-check. Mejor: usa Renovate para cualquier cosa que no puedas permitirte romper.
¿Cómo anclo a una versión real en lugar de latest?
Reemplaza image: nginx con image: nginx:1.27.2 en tu archivo Compose. Renovate abre un PR cuando se envía 1.27.3. Watchtower y Diun ambos notan nuevos digests incluso para etiquetas ancladas si la etiqueta misma se actualiza ascendentemente.
¿Funcionan estas herramientas con registros privados?
Sí. Watchtower, Diun y Renovate todos soportan credenciales de docker para registros privados (ECR, GCR, Harbor, autohospedado).
¿Puedo revertir una actualización mala?
Watchtower y Ouroboros no mantienen la imagen anterior etiquetada; necesitas el ID de imagen anterior o tu propio esquema de etiquetado. La interfaz de usuario de Portainer facilita el rollback. El rollback de Renovate es git revert.
¿Qué tan a menudo deben auto-actualizar los contenedores?
Para un homelab, una vez al día en una hora tranquila está bien. Para producción, prefiere solo notificación o basado en PR (Renovate) para que las actualizaciones se envíen a través de revisión y CI, no un daemon en segundo plano.