[Docker] - conheça beerus, uma ferramenta de automação para manter seu ambiente docker limpo e organizado

Beerus é uma ferramenta open-source que remove automaticamente containers, imagens e volumes não utilizados no Docker. Ele ajuda a manter seu ambiente local mais leve, organizado e eficiente, sem precisar executar comandos de limpeza manualmente. 🚀

🤔 Por que usar o Beerus?

Se você usa Docker no seu computador, provavelmente já passou por isso:

  • Seu disco fica cheio de containers e imagens antigas. 💾❌
  • Você precisa rodar comandos como docker system prune manualmente. 🏗️
  • Seu ambiente começa a ficar lento por causa do excesso de arquivos. 🐢

O Beerus resolve tudo isso de forma automática! 💡

🔧 Como Funciona?

O Beerus roda em segundo plano e limpa os recursos do Docker conforme as regras que você definir.

Por exemplo: ✅ Remover automaticamente containers com status Stopped ✅ Apagar imagens que não foram usadas nos últimos 7 dias

📦 Instalação

Para instalar, basta clonar o repositório e compilar:

# Clone o Beerus
 git clone https://github.com/LucasMendesl/beerus.git
 cd beerus

# Compile e gere o binário
 go build -o beerus .

⚙️ Configuração

O Beerus usa um arquivo YAML para definir as regras de limpeza. Aqui está um exemplo básico:

version: "1.0"
beerus:
  # Number of concurrent workers for processing containers/images
  concurrencyLevel: 5

  # How often to check for expired resources (in hours)
  expiringPollCheckInterval: 1

  logging:
    # Log level: debug, info, warn, error
    level: "info"
    # Log format: json, text
    format: "text"

  images:
    # Remove images older than N days
    lifetimeThreshold: 100
    # Skip cleanup for images with these labels
    ignoreLabels:
      - "beerus.service.critical"
    # Force remove repository images that have more that one tag
    forceRemovalOnConflict: false

  containers:
    # Maximum restart count for containers with "always" policy
    # 0 means no limit
    maxAlwaysRestartPolicyCount: 5
    # Skip cleanup for containers with these labels
    ignoreLabels:
      - "beerus.service.critical"
    # Remove associated volumes on container cleanup
    forceVolumeCleanup: false
    # Remove associated links on container cleanup
    forceLinkCleanup: false

▶️ Como Rodar

Após configurar, basta executar o Beerus:

./beerus --config-file config.yaml hakai

você também pode executar através do container docker:

# running using environment variables
❯ docker run \
-e BEERUS_IMAGES_LIFETIME_THRESHOLD=5 \
-e BEERUS_EXPIRING_POLL_CHECK_INTERVAL=24 \
-e BEERUS_LOG_LEVEL=debug \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
lucasmendesl/beerus:latest hakai

#running using cli flags
❯ docker run \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/lucasmendesl/beerus:latest hakai --lifetime-threshold=100

Ele começará a monitorar e limpar automaticamente os containers e imagens que não são mais necessários. 🧹

🎯 Benefícios

✅ Libera espaço no seu disco 💾 ✅ Mantém seu ambiente Docker organizado 🔄 ✅ Evita trabalho manual repetitivo ⏳ ✅ Fácil de configurar e usar 🛠️

📌 Conclusão

Beerus é uma ótima ferramenta para quem usa Docker no dia a dia e quer manter o ambiente limpo sem esforço. Baixe agora e experimente! 🚀

📍 Repositório oficial: Beerus no GitHub

Muito bom, uma duvida tem como exibir as images sem utilização mas sem excluir automaticamente, apenas para o usuario decidir o que excluir

Vim perguntar o que todos estão pensando: Então, isso vai dar um hakai no ambiente Docker? (Referências, referências...)

Fala Jose, tudo bem ? A idéia é exatamente essa 😂😂, essa descrição que o gepeto (apelido do chatGPT) criou para a documentação do repositório ***"maintains balance in Universe 7 by destroying what needs to be eliminated, this tool helps maintain balance in your Docker environment by efficiently cleaning up unused images and containers"***. é exatamente o objetivo do projeto, ja tive problema de tamanho de disco só por ser vagabundo e não rodar o prune, ai veio a idéia de criar isso pra facilitar a minha vida (e pra me divertir também).

kkkkkkkkkkkkkkkk, isso é genial, gostei do nome da ferramenta e o comando para limpar...... vai ajudar e divertir os devs otaku's por ai.

A idéia é exatamente essa, ser algo útil (não só pra mim, que sou preguiçoso e esqueço de dar **docker system prune**) mas como pra outras pessoas que esquecem disso. A referência da ferramenta foi justamente porque eu tava assistindo DBZ Super quando tive essa idéia. Valeu demais pelo feedback, espero que seja útil pra você
docker system prune alias HAKAI
Quase isso cara 😂😂 Juro pra você que pensei em um cronjob só rodando esse comando, mas acabou vindo a idéia de desenvolver esse projetinho, só pela zoeira mesmo e acabou que foi bem divertido e acredito que possa ajudar algumas pessoas, a idéia e ir evoluindo o projeto conforme a galera vai usando

Legal... vou recomendar para o nosso time aqui do ShellHub. Todos nossos serviços em Go e a UI, tanto da parte open-source quanto da closed-source, têm um ambiente de desenvolvimento baseado em docker-compose então volta e meia o pessoal precisa fazer um prune.

Fala Gustavo, tudo bem ? Cara muito obrigado pelo feedback, seria muito bacana ver isso sendo usado dessa forma, minha idéia era algo mais simples, de rodar na propria máquina, mas é bem bacana ver o pessoal interagindo e vendo outras formas de uso pra ferramenta, a idéia é sempre trabalhar para evoluir o projeto e quanto mais casos de uso e mais pessoas usando, melhor o projeto fica 😆 Eu espero que te ajude e ajude o pessoal da sua empresa cara.

Achei bem interessante, seria uma boa para configurar em uma máquina que faz builds e deploys. Exemplo uma máquina que roda Jenkins e faz build de imagens a cada commit ou Pull Request aprovado e chega a ter centenas de containers que não estão sendo mais usados, limpar os mais antigo que N dias e manter sempre as últimas 5 cópias de imagens para backup seria uma boa

Fala João, tudo bem ? Cara esse é um excelente caso de uso, a idéia da ferramenta era bem simples na minha cabeça, remover os recursos não usados na nossa máquina, mas vocês sempre pensando em outros casos de uso, massa demais 👊 A idéia é ir evoluindo cada vez mais a ferramenta pra abranger uma gama maior de casos de uso, vou ficar muito feliz vendo isso sendo útil para mais pessoas.