# Registry-TUI **Registry-TUI** es una interfaz de usuario en terminal (TUI) ligera, rápida y de alto contraste escrita en `Go` que permite gestionar las imágenes de contenedores tanto locales como de otros Registry. 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. * **Control de conexión a Registry:** Si no hay conexión al Registry indicado, se puede usar para la gestión de la imagenes locales al equipo. --- ## Capturas de Pantalla * Uso de Registry v2 ![](capturas/registry-tui_REGISTRY.png) * Imágenes locales del equipo ![](capturas/registry-tui_LOCAL.png) * Control de fallo de conexión con Registry ![](capturas/registry-tui_ERROR.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, se intentará conectar al registry local que se esté ejecutando en el puerto `5000` (por defecto suele apuntar a http://localhost:5000) ```bash ./registry-tui ``` Si necesitas usar otra URL de un servidor de registro (simplemente indicalo en las opciones): ```bash ./registry-tui http://192.168.1.50:5000 ``` 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. ## Uso de un Registry local para pruebas ### Iniciar Puede usar el script `start_Registry.sh` se encarga de crear (si no existe) un directorio en el que almacenar las imagenes y de iniciar un `registry:2` de forma local. Este *Registry* lo puede usar desde la consola con los comandos `docker push` o `docker pull` de forma normal pero atacando a http://localhost:5000 ### Detener Para detenerlo es tan sencillo como ejecutar el script `stop_Registry.sh`