Files
registry-tui/README.md
T
2026-10-31 18:32:28 +01:00

129 lines
5.5 KiB
Markdown

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