DEV Community

Evandro Carvalho
Evandro Carvalho

Posted on Originally published at landingfymax.com.br

Como Rodar Ollama com Docker e Aceleração de GPU NVIDIA (Guia Prático)

A demanda por executar modelos de linguagem locais (Llama, DeepSeek, Qwen, Mistral) para garantir soberania de dados, privacidade e zero custos com tokens de API explodiu.

O Ollama tornou-se o padrão mais simples e eficiente para isso. No entanto, instalar o binário ou drivers CUDA diretamente no sistema operacional do servidor muitas vezes gera conflito de dependências, quebra de bibliotecas após atualizações do kernel (apt upgrade) ou dificuldades para isolar ambientes.

Neste guia, você vai ver como isolar toda a stack de inferência dentro do Docker utilizando o NVIDIA Container Toolkit, com alocação correta de VRAM e boas práticas de segurança de rede.


1. Configurando o NVIDIA Container Toolkit (Host)

Para que o daemon do Docker consiga passar as GPUs e capacidades de computação CUDA para os containers, o host (Debian/Ubuntu) precisa do runtime oficial da NVIDIA.

Execute no terminal:

# 1. Adicionar o 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 o toolkit e configurar o Docker daemon
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Enter fullscreen mode Exit fullscreen mode

2. O compose.yaml com Aceleração de GPU

Crie um arquivo compose.yaml (ou docker-compose.yml) na pasta do seu projeto.

O ponto crucial está na diretiva deploy.resources.reservations.devices, onde definimos o driver nvidia e as capacidades necessárias (gpu, compute, utility):

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama-gpu-server
    restart: unless-stopped
    ports:
      # Amarre ao localhost para não expor a API sem autenticação na rede externa!
      - "127.0.0.1:11434:11434"
    volumes:
      - ollama_models:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu, compute, utility]

volumes:
  ollama_models:
    name: ollama_models_volume
Enter fullscreen mode Exit fullscreen mode

Suba o container em background:

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

3. Validando se a GPU está ativa dentro do Container

Para confirmar se o container está de fato enxergando a GPU NVIDIA e o CUDA:

docker exec -it ollama-gpu-server nvidia-smi
Enter fullscreen mode Exit fullscreen mode

Se a saída do nvidia-smi exibir sua GPU (ex: RTX 3060, RTX 4060 Ti, A100, etc.), o passthrough foi configurado com sucesso!


4. Baixando e Testando Modelos

Você pode interagir diretamente com a CLI do Ollama dentro do container:

# Baixar e testar um modelo leve e rápido (ex: Llama 3.2 de 3B)
docker exec -it ollama-gpu-server ollama run llama3.2:3b

# Ou um modelo focado em código / raciocínio (ex: Qwen 2.5 Coder 7B)
docker exec -it ollama-gpu-server ollama run qwen2.5-coder:7b
Enter fullscreen mode Exit fullscreen mode

Para listar os modelos que já estão persistidos no seu volume Docker:

docker exec -it ollama-gpu-server ollama list
Enter fullscreen mode Exit fullscreen mode

5. Dica Crítica de Segurança de Rede

⚠️ Atenção: Por padrão, a API REST do Ollama (http://localhost:11434/api/...) não implementa camada de autenticação.

Se você alterar a porta para 0.0.0.0:11434, qualquer usuário na mesma rede local (ou na internet, se houver IP público) poderá:

  • Submeter prompts e consumir 100% da sua VRAM e CPU;
  • Excluir modelos baixados via chamada DELETE;
  • Fazer download de modelos arbitrários no seu disco.

Como proteger em produção:

  1. Mantenha a porta amarrada estritamente em 127.0.0.1:11434 no Compose.
  2. Utilize um reverse proxy como Caddy ou Nginx com autenticação por cabeçalho (Authorization: Bearer <seu-token>) e terminação SSL/TLS se precisar expor para outros serviços.
  3. Se for para acesso remoto privado, utilize um túnel VPN moderno como Tailscale ou WireGuard.

Conclusão e Recursos

Rodar o Ollama via Docker Compose traz a tranquilidade de atualizar imagens sem medo de quebrar bibliotecas do sistema operacional, além de facilitar a réplica do ambiente em qualquer servidor.

Publiquei o guia completo com benchmarks de consumo de VRAM (8GB vs 12GB vs 16GB), dicas de dimensionamento de hardware e integrações no meu blog:

👉 Guia Completo: Ollama com Docker e GPU no Fymax Sentinel


Como você está rodando LLMs locais na sua infraestrutura hoje? Utiliza Docker, bare-metal ou soluções como vLLM/LocalAI? Deixe nos comentários!

Top comments (0)