Como rodar Ollama com aceleração de GPU em Docker sem quebrar seus drivers CUDA
Fala pessoal!
Com o custo das APIs de LLM subindo e a necessidade de manter dados sensíveis dentro de casa (LGPD e soberania de dados), cada vez mais desenvolvedores e times de infraestrutura estão migrando para inferência local com Ollama.
O problema clássico que vejo muita gente enfrentando é instalar o binário direto na máquina host e acabar com conflito de versões de bibliotecas CUDA, drivers NVIDIA desalinhados ou dificuldade para gerenciar limites de VRAM.
Recentemente estruturei um ambiente conteinerizado completo para produção e queria compartilhar o compose.yaml funcional e as configurações do NVIDIA Container Toolkit que deixam isso rodando limpo e isolado.
1. Configurando o NVIDIA Container Toolkit
Antes de subir o container, o Docker precisa enxergar as GPUs do host. No Ubuntu/Debian:
# 1. Adicionar repositório oficial da NVIDIA
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 2. Instalar toolkit e configurar runtime
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
2. O Docker Compose com alocação correta de VRAM
O segredo está no bloco deploy.resources.reservations.devices para garantir que o container receba o device gpu e as capacidades [gpu, compute, utility]:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama-gpu-server
restart: unless-stopped
ports:
- "127.0.0.1:11434:11434" # Dica: Amarre ao localhost por segurança!
volumes:
- ollama_models:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu, compute, utility]
volumes:
ollama_models:
name: ollama_models_volume
3. Dica de Segurança Importante
Nunca exponha a porta 11434 aberta para a internet sem autenticação (0.0.0.0:11434), pois a API do Ollama não possui camada de autenticação nativa por padrão. O ideal é manter em 127.0.0.1 e colocar um reverse proxy (Nginx ou Caddy com Bearer Token) na frente.
Escrevi o artigo completo detalhando também como monitorar o consumo de VRAM com o nvidia-smi em tempo real, dicas de dimensionamento de hardware (Mini PCs e GPUs) e comandos de teste de modelos quantizados em:
👉 Tutorial Completo no Fymax Sentinel
Como vocês estão lidando com inferência local de LLMs hoje na infra de vocês? Estão usando Ollama, vLLM ou TGI?