Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages