main
Docker API always returns Created as Unix seconds (number), so the type-checking branches were dead code. Also fixes the missing * 1000 conversion that caused incorrect relative times. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
cd docker-manager
go run .
A aplicação será iniciada em http://localhost:3000
Compilar
go build -o docker-manager .
./docker-manager
Configurar porta
PORT=8080 go run .
Detecção do Docker Socket
O backend detecta automaticamente o socket Docker nesta ordem:
- Variável de ambiente
DOCKER_HOST(formatounix:///path/to/socket) - Docker context ativo via
docker context inspect - Caminhos conhecidos:
/var/run/docker.sock~/.docker/run/docker.sock~/Library/containers/com.docker.docker/Data/docker.raw.sock/run/docker.sock
- Fallback:
/var/run/docker.sock
API Endpoints
Info
GET /api/info- Informações do Docker Engine
Containers
GET /api/containers- Listar todos os containersPOST /api/containers/{id}/start- Iniciar containerPOST /api/containers/{id}/stop- Parar containerPOST /api/containers/{id}/restart- Reiniciar containerDELETE /api/containers/{id}- Remover containerGET /api/containers/{id}/logs?tail={n}- Obter logs do container (tail: 50/100/200/500)
Images
GET /api/images- Listar todas as imagensDELETE /api/images/{id}- Remover imagemGET /api/images/pull?name={name}- Fazer pull de imagem
Como Usar
- 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
- 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)
- 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
- 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çãodocker/client.go- Cliente Dockerhandlers/*.go- Lógica dos endpoints.
Description
Languages
JavaScript
33.8%
CSS
25.1%
Go
24.2%
HTML
16.2%
Dockerfile
0.6%
Other
0.1%