Skip to content

estevam5s/DCC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Docker Control Center (DCC)

Uma ferramenta profissional para gerenciamento local de containers Docker, construída com FastAPI (backend) e Next.js (frontend).

Visão Geral

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.

Funcionalidades

Dashboard

  • 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

Gerenciamento de Containers

  • 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

Gerenciamento de Imagens

  • Listar todas as imagens Docker
  • Baixar novas imagens (pull)
  • Remover imagens
  • Visualizar tamanho das imagens

Gerenciamento de Volumes

  • Listar todos os volumes
  • Criar novos volumes
  • Remover volumes

Gerenciamento de Redes

  • Listar todas as redes Docker
  • Criar novas redes
  • Remover redes
  • Visualizar configuração de rede (subnet, gateway)

Tecnologias Utilizadas

Backend

  • 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

Frontend

  • 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

Infraestrutura

  • Docker Compose: Orquestração de containers
  • Docker Daemon API: Comunicação via docker.sock

Arquitetura

┌─────────────────────────────────────────────────────────────────┐
│                    Docker Control Center                         │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐         ┌────────────────────────────────┐ │
│  │   Frontend      │◄────────│   Backend (FastAPI)            │ │
│  │   (Next.js)     │  REST   │   - Docker SDK                 │ │
│  │   :3009         │  + WS   │   - WebSocket Server           │ │
│  └─────────────────┘         └────────────────────────────────┘ │
│                                                 │               │
│                                    ┌────────────▼────────────┐   │
│                                    │   Docker Daemon        │   │
│                                    │   (docker.sock)        │   │
│                                    └────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Requisitos

  • 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)

Quick Start

1. Clone o projeto ou navegue até o diretório

cd dcc/docker

2. Execute o Docker Compose

docker-compose up --build

3. Acesse a aplicação

4. Credenciais de Acesso

  • Usuário: admin
  • Senha: admin

Estrutura do Projeto

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

Endpoints da API

Containers

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

Imagens

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

Volumes

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

Redes

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

Sistema

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

Configuração

Variáveis de Ambiente

Backend

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

Frontend

Variável Padrão Descrição
NEXT_PUBLIC_API_URL http://localhost:8000 URL da API

Portas

Serviço Porta Externa Porta Interna
Frontend 3009 3000
Backend 8000 8000

Segurança

Aviso Importante

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

Autenticação

O sistema usa autenticação HTTP Basic:

  • Todas as requisições API requerem credenciais
  • O frontend envía as credenciais automaticamente

Desenvolvimento

Executando sem Docker

Backend

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 --reload

Frontend

cd frontend
npm install
npm run dev

Customização

Alterar credenciais padrão

Edite backend/config/settings.py:

class Settings(BaseSettings):
    basic_auth_username: str = "seu_usuario"
    basic_auth_password: str = "sua_senha"

Alterar porta do frontend

Edite docker/docker-compose.yml:

frontend:
  ports:
    - "SUA_PORTA:3000"

Troubleshooting

Container não conecta ao Docker

Verifique se o Docker Desktop está rodando e se o socket está acessível:

docker info

Erro de CORS

Se o frontend não conseguir acessar a API, verifique as configurações de CORS em backend/main.py.

Porta já em uso

Se as portas 3009 ou 8000 estiverem em uso, altere as portas no docker-compose.yml.

Contribuição

Sinta-se livre para contribuir com o projeto:

  1. Fork o repositório
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

Licença

Este projeto é para fins educacionais e de desenvolvimento.

Screenshots

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

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors