Uma ferramenta profissional para gerenciamento local de containers Docker, construída com FastAPI (backend) e Next.js (frontend).
O Docker Control Center é um painel de administração que permite gerenciar todos os aspectos do seu ambiente Docker local de forma intuitiva e eficiente. Ideal para desenvolvedores e administradores de sistemas que precisam de uma interface visual para gerenciar containers, imagens, volumes e redes Docker.
- Visão geral completa do ambiente Docker
- Contagem de containers (total, rodando, parados)
- Uso de CPU e memória em tempo real
- Estatísticas de imagens, volumes e redes
- Listar todos os containers (ativos e parados)
- Iniciar, parar e reiniciar containers
- Remover containers (com opção force)
- Visualizar logs em tempo real
- Acessar terminal interativo (exec)
- Visualizar uso de CPU e memória por container
- Listar todas as imagens Docker
- Baixar novas imagens (pull)
- Remover imagens
- Visualizar tamanho das imagens
- Listar todos os volumes
- Criar novos volumes
- Remover volumes
- Listar todas as redes Docker
- Criar novas redes
- Remover redes
- Visualizar configuração de rede (subnet, gateway)
- FastAPI: Framework web moderno e performático para Python
- Docker SDK for Python: Biblioteca oficial para interação com Docker
- Uvicorn: Servidor ASGI de alta performance
- WebSockets: Para streaming de logs em tempo real
- Pydantic: Validação de dados e tipagem
- Next.js 14: Framework React com renderização híbrida
- TypeScript: Tipagem estática para maior segurança
- Tailwind CSS: Framework CSS utilitário
- Lucide React: Biblioteca de ícones
- Axios: Cliente HTTP
- Docker Compose: Orquestração de containers
- Docker Daemon API: Comunicação via docker.sock
┌─────────────────────────────────────────────────────────────────┐
│ Docker Control Center │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌────────────────────────────────┐ │
│ │ Frontend │◄────────│ Backend (FastAPI) │ │
│ │ (Next.js) │ REST │ - Docker SDK │ │
│ │ :3009 │ + WS │ - WebSocket Server │ │
│ └─────────────────┘ └────────────────────────────────┘ │
│ │ │
│ ┌────────────▼────────────┐ │
│ │ Docker Daemon │ │
│ │ (docker.sock) │ │
│ └────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Docker Desktop ou Docker Engine instalado e rodando
- Docker Compose (incluído no Docker Desktop)
- Porta 3009 disponível (frontend)
- Porta 8000 disponível (backend)
cd dcc/dockerdocker-compose up --build- Frontend: http://localhost:3009
- Backend API: http://localhost:8000
- Documentação API: http://localhost:8000/docs
- Usuário:
admin - Senha:
admin
dcc/
├── backend/ # Aplicação FastAPI
│ ├── api/
│ │ └── routes/ # Endpoints da API
│ │ ├── containers.py # Gerenciamento de containers
│ │ ├── images.py # Gerenciamento de imagens
│ │ ├── volumes.py # Gerenciamento de volumes
│ │ ├── networks.py # Gerenciamento de redes
│ │ └── stats.py # Estatísticas do sistema
│ ├── services/ # Lógica de negócio
│ │ ├── docker_service.py # Conexão com Docker
│ │ ├── container_manager.py # Operações com containers
│ │ ├── image_manager.py # Operações com imagens
│ │ ├── volume_manager.py # Operações com volumes
│ │ └── network_manager.py # Operações com redes
│ ├── websocket/ # Handlers WebSocket
│ │ └── manager.py # Gerenciador de conexões
│ ├── core/
│ │ └── security.py # Autenticação básica
│ ├── config/
│ │ └── settings.py # Configurações
│ ├── main.py # Ponto de entrada
│ └── requirements.txt # Dependências Python
│
├── frontend/ # Aplicação Next.js
│ ├── app/ # Páginas (App Router)
│ │ ├── page.tsx # Dashboard
│ │ ├── containers/
│ │ │ └── page.tsx # Lista de containers
│ │ ├── images/
│ │ │ └── page.tsx # Lista de imagens
│ │ ├── volumes/
│ │ │ └── page.tsx # Lista de volumes
│ │ ├── networks/
│ │ │ └── page.tsx # Lista de redes
│ │ ├── api.ts # Cliente API
│ │ ├── layout.tsx # Layout principal
│ │ ├── globals.css # Estilos globais
│ │ └── Sidebar.tsx # Barra lateral
│ ├── components/ # Componentes React
│ ├── package.json # Dependências Node.js
│ ├── tailwind.config.js # Configuração Tailwind
│ ├── tsconfig.json # Configuração TypeScript
│ └── next.config.js # Configuração Next.js
│
├── docker/ # Configuração Docker
│ ├── docker-compose.yml # Orquestração
│ ├── Dockerfile.backend # Imagem do backend
│ └── Dockerfile.frontend # Imagem do frontend
│
└── README.md # Este arquivo
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/containers |
Lista todos os containers |
| GET | /api/containers/{id} |
Detalhes de um container |
| POST | /api/containers/{id}/start |
Inicia um container |
| POST | /api/containers/{id}/stop |
Para um container |
| POST | /api/containers/{id}/restart |
Reinicia um container |
| DELETE | /api/containers/{id} |
Remove um container |
| GET | /api/containers/{id}/logs |
Pega logs de um container |
| GET | /api/containers/{id}/stats |
Pega estatísticas de um container |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/images |
Lista todas as imagens |
| GET | /api/images/{id} |
Detalhes de uma imagem |
| DELETE | /api/images/{id} |
Remove uma imagem |
| POST | /api/images/pull |
Baixa uma nova imagem |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/volumes |
Lista todos os volumes |
| GET | /api/volumes/{name} |
Detalhes de um volume |
| DELETE | /api/volumes/{name} |
Remove um volume |
| POST | /api/volumes |
Cria um novo volume |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/networks |
Lista todas as redes |
| GET | /api/networks/{id} |
Detalhes de uma rede |
| DELETE | /api/networks/{id} |
Remove uma rede |
| POST | /api/networks |
Cria uma nova rede |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/stats |
Estatísticas gerais |
| GET | /health |
Health check |
| WS | /ws/logs/{container_id} |
WebSocket de logs |
| WS | /ws/terminal/{container_id} |
WebSocket de terminal |
As configurações podem ser ajustadas no arquivo backend/config/settings.py:
| Variável | Padrão | Descrição |
|---|---|---|
docker_socket |
/var/run/docker.sock |
Caminho do socket Docker |
basic_auth_username |
admin |
Usuário para autenticação |
basic_auth_password |
admin |
Senha para autenticação |
debug |
false |
Modo debug |
| Variável | Padrão | Descrição |
|---|---|---|
NEXT_PUBLIC_API_URL |
http://localhost:8000 |
URL da API |
| Serviço | Porta Externa | Porta Interna |
|---|---|---|
| Frontend | 3009 | 3000 |
| Backend | 8000 | 8000 |
Este aplicação conecta-se diretamente ao daemon Docker através do socket docker.sock. Isso fornece controle total sobre o Docker e deve ser usado apenas em ambientes confiáveis.
Recomendações:
- Não exponha esta aplicação publicamente
- Mantenha as credenciais padrão alteradas em produção
- Use apenas em localhost ou em rede confiável
- Considere usar em conjunto com autenticação a nível de rede
O sistema usa autenticação HTTP Basic:
- Todas as requisições API requerem credenciais
- O frontend envía as credenciais automaticamente
cd backend
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run devEdite backend/config/settings.py:
class Settings(BaseSettings):
basic_auth_username: str = "seu_usuario"
basic_auth_password: str = "sua_senha"Edite docker/docker-compose.yml:
frontend:
ports:
- "SUA_PORTA:3000"Verifique se o Docker Desktop está rodando e se o socket está acessível:
docker infoSe o frontend não conseguir acessar a API, verifique as configurações de CORS em backend/main.py.
Se as portas 3009 ou 8000 estiverem em uso, altere as portas no docker-compose.yml.
Sinta-se livre para contribuir com o projeto:
- Fork o repositório
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto é para fins educacionais e de desenvolvimento.
O Dashboard apresenta:
- Cards com estatísticas do ambiente Docker
- Gráficos de uso de CPU e memória
- Interface escura com tema Docker (#0db7ed)
- Design moderno e responsivo
Desenvolvido com FastAPI + Next.js + Docker