# 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.