O artigo XDA sobre fixar imagens do Docker em latest é uma lição que todo operador de homelab aprende da maneira difícil: latest se move sem avisar, e um pull ruim pode quebrar uma pilha que você não pode reverter. As ferramentas abaixo lhe dão o caminho do meio: notificação sobre novas imagens, fixar em tags reais e atualizar em um cronograma que você controla. Sete escolhas em Docker, Podman, Compose, Swarm e Kubernetes.
O que procurar em uma atualização automática de contêiner
A escolha correta depende da escala, não da preferência. Considere:
- Notificar vs auto-aplicar. Ferramentas apenas de notificação permitem que você decida quando atualizar. Ferramentas de auto-aplicar atualizam em seu próprio cronograma.
- Política de tags. Pulls de
latestgeneralizados, fixação consciente de semver ou bumps baseados em PR estilo Renovate. - Suporte a rollback. Uma ferramenta que mantém a imagem anterior vale o disco extra.
- Destinos de notificação. Slack, Discord, email, Gotify, ntfy, ou nada.
- Tamanho da frota. Um host está bem com Watchtower. Cem hosts querem Renovate ou um operador Kubernetes.
Comparação rápida
| App | Melhor para | Runtime | Grátis | Notificações | Auto-aplicar |
|---|---|---|---|---|---|
| Watchtower | Hosts homelab solo | Docker | Sim | Sim | Sim |
| Diun | Apenas notificação, sem auto-aplicar | Docker, Podman, Kubernetes | Sim | Sim | Não |
| Ouroboros | Alternativa antiga de Watchtower | Docker | Sim | Sim | Sim |
| Podman auto-update | Systemd Podman nativo | Podman | Sim | Não | Sim |
| Shepherd | Serviços Docker Swarm | Docker Swarm | Sim | Não | Sim |
| Renovate | Compose ou Kubernetes gerenciados por GitOps | Qualquer (via git) | Sim (código aberto) | Sim | Via PRs |
| Portainer | Atualizações manuais com GUI | Docker, Swarm, Kubernetes | Free CE | Sim | Sim |
1. Watchtower, melhor padrão para um único host Docker
Watchtower é um contêiner Docker que observa seus outros contêineres Docker. Quando uma nova tag de imagem é enviada para o registro, Watchtower a extrai, recria o contêiner com a mesma configuração e limpa a imagem antiga. Adicione um rótulo a um contêiner para ativar ou desativar.
É o iniciador padrão para um host Docker doméstico porque requer um bloco Docker Compose de duas linhas para configurar e faz exatamente uma coisa bem.
Onde fica aquém: Watchtower assume latest ou uma tag mutável. Se você fixar em 1.2.3, ele não mudará para 1.2.4 por conta própria. Sem rollback. O projeto upstream desacelerou; forks (baseados em WOL, com patches de segurança) são comuns.
Preço: Grátis e código aberto (Apache 2.0).
Plataformas: Qualquer host que execute Docker (Windows, macOS, Linux, ARM).
Download: containrrr.dev/watchtower · GitHub
Conclusão: A escolha correta para um host Docker pessoal, com a ressalva de que você não deve apontá-lo para serviços de produção que você não pode se permitir quebrar.
2. Diun, melhor escolha apenas de notificação
Diun observa tags de imagem em seu registro e envia uma notificação quando um novo digest está disponível. Nunca extrai, nunca recria, nunca toca seus contêineres. Você recebe um ping do Discord ou uma notificação do Gotify, e atualiza em seus termos.
A razão de escolhê-lo é o controle. O auto-aplicar do Watchtower se move mais rápido do que a maioria das pessoas quer; Diun mantém os humanos no loop.
Onde fica aquém: Você ainda precisa executar docker compose pull && docker compose up -d manualmente.
Preço: Grátis e código aberto (MIT).
Plataformas: Qualquer host com Docker, Podman ou um cluster Kubernetes.
Download: crazymax.dev/diun · GitHub
Conclusão: A escolha correta quando você quer saber sobre atualizações mas não aplicá-las automaticamente.
3. Ouroboros, melhor alternativa antiga de Watchtower
Ouroboros é uma alternativa baseada em Python para Watchtower que precede Watchtower e faz o mesmo trabalho básico: extrair, recriar, podar. Alguns operadores de homelab permanecem no Ouroboros porque sua configuração é mais próxima do que escreveram anos atrás.
O desenvolvimento é lento mas estável. Novos usuários devem começar com Watchtower ou Diun.
Onde fica aquém: Cadência de lançamento mais lenta que as alternativas. O conjunto de recursos é essencialmente congelado.
Preço: Grátis e código aberto (MIT).
Plataformas: Qualquer host que execute Docker.
Download: GitHub
Conclusão: Tudo bem se você já o executa. Caso contrário, Watchtower ou Diun.
4. Podman auto-update, melhor opção nativa de Podman
Podman vem com podman auto-update, um subcomando que lê um rótulo em cada contêiner e extrai imagens frescas em um timer do systemd. Nenhum contêiner sidecar, nenhuma ferramenta de terceiros. Ele se integra com Quadlet (gerador Podman para systemd) para definições de serviço declarativas.
A razão de escolhê-lo é que se você executar Podman sem raiz no RHEL, Fedora ou um Debian moderno, o caminho de atualização automática já existe no SO.
Onde fica aquém: Apenas Podman. Nenhuma notificação integrada.
Preço: Grátis e código aberto (Apache 2.0).
Plataformas: Linux (Podman).
Download: Documentação em docs.podman.io
Conclusão: A escolha nativa em hosts Podman. Nenhuma ferramenta nova necessária.
5. Shepherd, melhor para Docker Swarm
Shepherd observa serviços Docker Swarm (não contêineres autônomos) e lamina serviços quando sua tag de imagem tem um novo digest. Ele respeita a estratégia de atualização contínua do Swarm, o que significa que funciona bem com verificações de saúde e paralelismo de atualização.
Muito poucas pessoas ainda executam Swarm em escala, mas para aqueles que executam, Shepherd é o atualizador automático construído para o modelo de Swarm.
Onde fica aquém: Apenas Swarm. Sem uso fora de um cluster Swarm.
Preço: Grátis e código aberto (MIT).
Plataformas: Docker Swarm (hosts Linux).
Download: GitHub
Conclusão: A escolha correta dentro de um Docker Swarm.
6. Renovate, melhor abordagem GitOps
Renovate é um bot que abre pull requests em seu repo git quando uma tag de imagem tem uma atualização. Funciona em arquivos Compose, manifestos Kubernetes, charts Helm, Dockerfiles, GitHub Actions e dezenas de outros destinos. O PR inclui notas de versão, links do changelog e uma verificação de que a nova tag realmente existe.
A razão de escolhê-lo é que as atualizações se tornam mudanças de código. Você as revisa, as mescla e CI aplica a atualização. Rollback é um git revert. Este é o padrão com o qual a maioria das equipes de produção acaba.
Onde fica aquém: Requer um pipeline de implantação baseado em git. Não é adequado para um homelab que não usa CI.
Preço: Grátis auto-hospedado (Apache 2.0). Serviço gerenciado (Mend) também é grátis para código aberto e equipes pequenas.
Plataformas: GitHub, GitLab, Bitbucket, git auto-hospedado.
Download: renovatebot.com · GitHub
Conclusão: A escolha correta quando sua infraestrutura está definida em git.
7. Portainer, melhor atualização manual baseada em GUI
Portainer é um painel de controle de gerenciamento Docker/Swarm/Kubernetes. Mostra cada contêiner e cada imagem, marca quando uma nova imagem está disponível e permite recriar o contêiner com o pull fresco com dois cliques. Community Edition é gratuita; Business Edition adiciona RBAC, varredura de imagem e muito mais.
A razão de escolhê-lo é que algumas atualizações são decisões únicas que você quer tomar a partir de uma UI em vez de um arquivo de configuração.
Onde fica aquém: Não totalmente automatizado. Você é o atualizador automático; Portainer apenas lhe dá o botão.
Preço: Community Edition gratuita. Business Edition paga.
Plataformas: Docker, Swarm, Kubernetes (auto-hospedado).
Download: portainer.io · GitHub
Conclusão: A escolha para fluxos de trabalho de clique para atualizar e frotas mistas.
Como escolher
- Host Docker único, homelab: Watchtower.
- Mesmo, mas você quer uma cabeça acima, não auto-aplicar: Diun.
- Você executa Podman:
podman auto-update. - Docker Swarm: Shepherd.
- Kubernetes ou Compose no git: Renovate.
- Prefere um painel: Portainer.
FAQ
É seguro executar Watchtower contra produção?
Não sem uma política de tag cuidadosa. Aponte-o em :latest e pode quebrar sua pilha em qualquer erro upstream. Aponte-o em tags fixadas por semver e adicione rollback baseado em verificação de saúde. Melhor: use Renovate para qualquer coisa que você não possa se permitir quebrar.
Como faço para fixar em uma versão real em vez de latest?
Substitua image: nginx por image: nginx:1.27.2 em seu arquivo Compose. Renovate abre um PR quando 1.27.3 é lançado. Watchtower e Diun ambos notam novos digests mesmo para tags fixadas se a tag em si for atualizada upstream.
Essas ferramentas funcionam com registros privados?
Sim. Watchtower, Diun e Renovate todos suportam credenciais docker para registros privados (ECR, GCR, Harbor, auto-hospedado).
Posso reverter uma atualização ruim?
Watchtower e Ouroboros não mantêm a imagem anterior marcada; você precisa do ID de imagem anterior ou seu próprio esquema de marcação. A UI do Portainer torna o rollback mais fácil. Rollback de Renovate é git revert.
Com que frequência os contêineres devem auto-atualizar?
Para um homelab, uma vez por dia em uma hora tranquila está bem. Para produção, prefira apenas notificação ou baseado em PR (Renovate) para que as atualizações sejam entregues através de revisão e CI, não um daemon de fundo.