Skip to content

Automtion-devops/scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🐳 Docker Cleaner

Una herramienta interactiva, modular y extensible para mantener tu entorno Docker limpio y eficiente. Perfecta para DevOps que valoran el orden... y el tiempo.


📚 Índice

  1. 🎯 Objetivo
  2. 🧰 Finalidad
  3. 🗂️ Estructura del Proyecto
  4. 🧪 Modo CLI
  5. 🎛️ Modo TUI
  6. 🖥️ Modo Web
  7. 🐳 Ejecutar en Docker
  8. 📝 Logs
  9. 📊 Diagrama del flujo de ejecución
  10. 🔐 Configuración SSH para múltiples cuentas GitHub
  11. ✍️ Autor
  12. 💡 Próximas mejoras

🎯 Objetivo

Automatizar y centralizar la limpieza de contenedores, imágenes, redes y volúmenes de Docker, con una experiencia de usuario multiplataforma: CLI, TUI, Web o contenedor.


🧰 Finalidad

  • Ahorrar tiempo limpiando recursos inactivos.
  • Visualizar el estado de Docker fácilmente.
  • Facilitar su ejecución desde distintos entornos (terminal, navegador o Docker).

🗂️ Estructura del Proyecto

docker_cleaner/
├── app/
│   ├── __init__.py
│   ├── cleaner.py        # Lógica principal de limpieza Docker
│   ├── cli.py            # Menú en consola con Rich
│   ├── tui.py            # Interfaz de texto con Textual
│   ├── web.py            # API REST con Flask
│   ├── utils.py          # Utilidades: validaciones, logs
│   ├── static/           # Archivos estáticos (CSS, JS)
│   │   ├── css/
│   │   │   └── styles.css
│   │   └── js/
│   │       └── scripts.js
│   ├── templates/        # Plantillas HTML
│   │   └── index.html
├── Dockerfile            # Imagen Docker ejecutable
├── requirements.txt      # Dependencias del proyecto
├── docker_cleaner.log    # Logs de ejecución (autogenerado)
└── [README.md](http://_vscodecontentref_/1)             # Este archivo

🧪 Modo CLI

Ejecuta el siguiente comando para iniciar el menú interactivo en la consola:

python -m app.cli

Permite navegar por un menú de texto en la consola, usando teclas numéricas. Ideal para uso rápido desde terminales SSH o shell scripts.

  • Características:
  • Navega por un menú de texto usando teclas numéricas.
  • Ideal para uso rápido desde terminales SSH o scripts.

🎛️ Modo TUI

Ejecuta el siguiente comando para abrir la interfaz de texto interactiva:

python -m app.tui

Abre una interfaz estilo terminal con botones interactivos. Ideal para quienes disfrutan el modo visual sin salir del terminal.

  • Características:
  • Interfaz visual en la terminal con botones interactivos.
  • Ideal para quienes prefieren una experiencia más visual sin salir del terminal.

🖥️ Modo Web

Ejecuta el siguiente comando para iniciar la API REST:

python -m app.web

Endpoints disponibles:

  • GET /status → Estado de contenedores, imágenes y volúmenes
  • GET /clean/basic → Limpieza básica
  • GET /clean/advanced → Limpieza avanzada (-a)
  • GET /clean/volumes → Limpieza de volúmenes
  • GET /disk → Uso de disco

Luego accede desde tu navegador a: 📡 http://localhost:5000


🐳 Ejecutar en Docker

  1. Construir imagen
docker build -t docker-cleaner .
  1. Ejecutar con acceso al Docker del host
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker-cleaner

✅ Por defecto se ejecuta el modo CLI. Puedes cambiarlo modificando CMD en el Dockerfile.


📝 Logs

Todos los comandos ejecutados y errores quedan registrados en:

docker_cleaner.log

📊 Diagrama del flujo de ejecución

                ┌────────────────────────────┐
                │        Interfaz CLI        │
                ├────────────┬───────────────┤
                │            │               │
         TUI (textual)    Flask API       Docker CLI
                │            │               │
                └──────┬─────┴────┬──────────┘
                       │          │
               ┌───────▼──────────▼─────────┐
               │      Módulo cleaner.py     │
               │ Ejecuta comandos Docker +  │
               │ registra logs en .log file │
               └────────────┬───────────────┘
                            │
                     Subprocess + Logs

🔐 Configuración SSH para múltiples cuentas GitHub

Si trabajas con varias identidades (por ejemplo, una cuenta personal y una de organización), puedes configurar claves SSH separadas sin conflictos.

✅ Paso a paso para manejar varias identidades

  1. Genera una nueva clave para la organización:
ssh-keygen -t ed25519 -C "github-automation-devops" -f ~/.ssh/id_ed25519_automation
  1. Agrega la clave pública (.pub) a GitHub, en la organización correspondiente (Automtion-devops).

  2. Crea o edita el archivo ~/.ssh/config con:

# Cuenta personal: jhenao-nex
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519

# Organización: Automtion-devops
Host github-automation
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_automation
  1. Usa github-automation como host remoto en tus repos de la organización:
git remote set-url origin git@github-automation:Automtion-devops/scripts.git

🔁 ¿Y si quiero volver a trabajar con mi cuenta personal?

Solo asegúrate de que el remote esté usando el host normal:

git remote set-url origin git@github.com:jhenao-nex/mi-repo.git

Este host usa por defecto la clave ~/.ssh/id_ed25519, correspondiente a tu cuenta personal.

✅ Resultado

Puedes trabajar con múltiples cuentas GitHub sin conflicto, simplemente cambiando el remote según corresponda:

  • github.com → tu cuenta personal (jhenao-nex)
  • github-automation → tu organización (Automtion-devops)

✍️ Autor

Jaime A. Henao A. DevOps / Cloud Engineer ☁️ 🛠️ 📧 Contacto disponible bajo solicitud


💡 Próximas mejoras

  • Configuración por archivo .env
  • Autenticación básica para API web
  • Programador de tareas (cron-style)
  • GUI desktop con Tkinter o Electron

¡Gracias por usar Docker Cleaner! 💥 Haz que tu entorno Docker vuelva a respirar.

About

Repositorio para alojar scripts Devops

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published