99 lines
4.5 KiB
Markdown
99 lines
4.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`.
|
|
|
|
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
|
|
|
|

|
|
|
|

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