From f1d8fefc5a35f1bea553243501343368c8127d47 Mon Sep 17 00:00:00 2001 From: luskbyte Date: Fri, 24 Apr 2026 15:36:03 -0300 Subject: [PATCH] first commit --- README.md | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8c4ec25 --- /dev/null +++ b/README.md @@ -0,0 +1,131 @@ +# Docker Manager + +Aplicação web para gerenciar Docker localmente com backend em Go + net/http e frontend vanilla (HTML/CSS/JS). + +## Features + +- **Dashboard**: 4 blocos com status (Total Containers, Running, Stopped, Total Images) + card System Info com Docker Version, OS, Architecture, CPUs, Memory, Kernel, Server Version +- **Containers**: Tabela com columns (Name, Image, Status, Ports, Created) + ações (Start/Stop/Restart/Logs/Remove) +- **Images**: Tabela com columns (Repository, Tag, ID, Size, Created) + Pull com progresso por layer + Remove +- **Interface Dark Theme**: Tema dark moderno inspirado no GitHub Dark +- **Real-time Updates**: Polling a cada 30 segundos + +## Stack + +- **Backend**: Go 1.22 + `net/http` (sem dependências externas) +- **Frontend**: HTML5 + CSS3 + Vanilla JavaScript (sem frameworks) +- **API**: REST com JSON + +## Estrutura + +``` +docker-manager/ +├── main.go # Servidor principal +├── go.mod # Módulo Go +├── docker/ +│ └── client.go # Cliente Docker + detecção de socket +├── handlers/ +│ ├── info.go # Handler GET /api/info +│ ├── containers.go # Handlers de containers +│ └── images.go # Handlers de images +└── static/ + ├── index.html # HTML da aplicação + ├── style.css # Estilos (tema dark) + └── app.js # Lógica frontend (vanilla JS) +``` + +## Instalação e Execução + +### Pré-requisitos +- Go 1.22+ +- Docker Engine instalado e acessível + +### Rodar a aplicação + +```bash +cd docker-manager +go run . +``` + +A aplicação será iniciada em `http://localhost:3000` + +### Compilar + +```bash +go build -o docker-manager . +./docker-manager +``` + +### Configurar porta + +```bash +PORT=8080 go run . +``` + +## Detecção do Docker Socket + +O backend detecta automaticamente o socket Docker nesta ordem: + +1. Variável de ambiente `DOCKER_HOST` (formato `unix:///path/to/socket`) +2. Docker context ativo via `docker context inspect` +3. Caminhos conhecidos: + - `/var/run/docker.sock` + - `~/.docker/run/docker.sock` + - `~/Library/containers/com.docker.docker/Data/docker.raw.sock` + - `/run/docker.sock` +4. Fallback: `/var/run/docker.sock` + +## API Endpoints + +### Info +- `GET /api/info` - Informações do Docker Engine + +### Containers +- `GET /api/containers` - Listar todos os containers +- `POST /api/containers/{id}/start` - Iniciar container +- `POST /api/containers/{id}/stop` - Parar container +- `POST /api/containers/{id}/restart` - Reiniciar container +- `DELETE /api/containers/{id}` - Remover container +- `GET /api/containers/{id}/logs?tail={n}` - Obter logs do container (tail: 50/100/200/500) + +### Images +- `GET /api/images` - Listar todas as imagens +- `DELETE /api/images/{id}` - Remover imagem +- `GET /api/images/pull?name={name}` - Fazer pull de imagem + +## Como Usar + +1. **Dashboard**: + - Visualize 4 blocos de status: Total Containers, Running, Stopped, Total Images + - Veja informações do sistema: Docker Version, OS, CPUs, Memory, Kernel, Server Version +2. **Containers**: + - Tabela com todos os containers: Name, Image, Status (badge colorido), Ports (chips), Created (tempo relativo) + - Ações: Start/Stop/Restart (para em execução), Logs com seletor de tail (50/100/200/500 linhas), Remove (com confirmação) +3. **Images**: + - Tabela com todas as imagens: Repository, Tag, ID, Size, Created + - Imagens com múltiplas tags geram múltiplas linhas + - Pull de novas imagens com progresso por layer ID (reescreve linhas existentes) + - Remove com confirmação +4. **Status**: O indicador colorido no topo direito mostra se está conectado ao Docker + +## Limitações e Notas + +- Sem autenticação (apenas para uso local) +- CORS habilitado para `*` (apenas para desenvolvimento) +- Logs com seletor de tail (50/100/200/500 linhas) +- Modal de confirmação genérico para operações destrutivas (Remove) +- Pull com progresso em tempo real via streaming +- Códigos ANSI nos logs são removidos antes da exibição +- Sem suporte a containers com privilegios elevados + +## Desenvolvimento + +Para modificar o frontend, edite: +- `static/index.html` - Estrutura HTML (navbar com logo Docker + tabs + modal) +- `static/style.css` - Estilos (tema dark, tabelas, modal, toasts, animações) +- `static/app.js` - Lógica JavaScript (fetch, render, handlers, confirmação) + +Para modificar o backend, edite: +- `main.go` - Rotas e configuração +- `docker/client.go` - Cliente Docker +- `handlers/*.go` - Lógica dos endpoints