commit e1a45afef8bf038e2af3126857919ee7d2fa3a66 Author: luisgulo Date: Sat Oct 31 17:56:40 2026 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..0416aae --- /dev/null +++ b/README.md @@ -0,0 +1,99 @@ +# Registry-TUI + +**Registry-TUI** es una interfaz de usuario en terminal (TUI) ligera, rápida y de alto contraste escrita en `Go`. + +Está inspirada en la filosofía de *Midnight Commander* y diseñada específicamente para la gestión bidireccional y eficiente de imágenes Docker locales y registros remotos (Docker Registry v2). + +--- + +## Características Principales + +* **Interfaz TUI Dual (Modo Registro / Modo Local):** Alternancia fluida entre la gestión del Docker Registry remoto/local (`R`) y el demonio Docker local de la máquina (`L`). +* **Agrupación Inteligente por Proyectos:** Organiza automáticamente las imágenes según el namespace o ruta del repositorio. +* **Gestión de Ciclo de Vida Completa:** + * **Borrado (`d`):** Eliminación segura de manifests en el Registry o imágenes locales en el demonio de Docker. + * **Tageado / Reestructuración (`t`):** Capacidad de duplicar o reetiquetar imágenes con rutas y versiones personalizadas. + * **Push Automatizado (`p`):** Envío directo de imágenes locales al Registry utilizando la CLI nativa de Docker para garantizar la sincronización de capas (*Cross-Repository Blob Mount*) y limpieza de etiquetas temporales. +* **Refresco Dinámico:** Recálculo y sincronización de datos en tiempo real al cambiar de modo. + +--- + +## Capturas de Pantalla + +![](capturas/registry-tui_REGISTRY.png) + +![](capturas/registry-tui_LOCAL.png) + +--- + +## Requisitos Técnicos + +* **Go** (versión 1.20 o superior para compilación). +* **Docker Engine** (con acceso activo al socket Unix `/var/run/docker.sock`). +* **Docker Registry v2** (con la variable de entorno `REGISTRY_STORAGE_DELETE_ENABLED=true` habilitada si se requiere soportar borrados remotos de manifests). + +--- + +## Instalación y Compilación + +1. Clona el repositorio o sitúate en el directorio del proyecto: +```bash + cd registry-tui +``` + + +2. Compila el binario ejecutable: +```Bash +go build -o registry-tui main.go +``` + +3. (Opcional) Mueve el binario a tu $PATH para ejecutarlo globalmente: +```Bash +sudo mv registry-tui /usr/local/bin/ +``` + +### Forma de Invocación y Uso + +Ejecuta la herramienta directamente desde la terminal especificando opcionalmente la URL de tu registro (por defecto suele apuntar a http://localhost:5000): +```Bash +./registry-tui [opciones] +``` + +Opciones de Ayuda y CLIMuestra el panel de ayuda y flags disponibles: +```Bash +./registry-tui --help +``` + +### Menú de Opciones y Ejemplos Prácticos + +Una vez dentro de la interfaz TUI, dispones de una barra de acciones inferior estilo *Midnight Commander* adaptada a las teclas de acceso rápido: + +| Tecla | Acción | Descripción | +| --- | --- | -------------------------- | +|R|Registry Mode|Cambia a la vista del catálogo remoto y refresca los repositorios del servidor.| +|L|Local Mode|Cambia a la vista del demonio Docker local en la máquina anfitriona.| +|t|Tagear / Copiar|Duplica o reetiqueta la imagen seleccionada bajo una nueva ruta o tag.| +|d|Borrar|Elimina de forma permanente la imagen o tag seleccionado (requiere confirmación y/n).| +|p|Push|Envía una imagen local seleccionada directamente hacia el Registry configurado.| +|q|Salir|Cierra la aplicación de manera limpia.| + +**Ejemplos detallados de uso:** + +1. Navegar entre el Registro y el entorno Local + * Al iniciar la aplicación por defecto te encuentras en el modo `[REGISTRY]`. + * Pulsa `L` para alternar instantáneamente al modo `[LOCAL]` y visualizar las imágenes disponibles en tu demonio de Docker local. + * Pulsa `R` para volver al modo `[REGISTRY]` (esta acción además fuerza un refresco automático del catálogo remoto). +2. Subir una imagen local al Registry (`p`) + * Sitúate en el modo **Local** (`L`). + * Utiliza las teclas de flecha (`Arriba` / `Abajo`) para seleccionar una imagen (por ejemplo, `minilms:latest`). + * Presiona la tecla `p`. La herramienta se encargará de etiquetar la imagen temporalmente, ejecutar el `docker push` nativo y limpiar los rastros locales innecesarios, dejándola disponible en el servidor. +3. Reetiquetar o Tagear una imagen (`t`) + * Selecciona cualquier imagen de la lista (tanto en modo Local como Registry). + * Presiona la tecla `t`. + * Se abrirá un cuadro de texto inferior pidiendo la ruta de destino. + * Introduce el nuevo tag (ejemplo: `proyecto-web/alpine:v1.0`) y pulsa `Enter`. +4. Borrar una imagen (`d`) + * Selecciona la imagen o versión específica que deseas eliminar. + * Presiona la tecla `d`. + * Aparecerá una pantalla de confirmación advirtiendo sobre la irreversibilidad de la acción. + * Pulsa `y` para confirmar el borrado, o `n` para cancelar. \ No newline at end of file