Módulo 4: Ollama - Introducción
Docker Deployment de Ollama
Descripción
Aprenderás a ejecutar Ollama en Docker container para deployment en servidores.
Tiempo: 40 minutos
Dificultad: Media-Alta
🎯 Objetivos
- ✅ Ejecutar Ollama en Docker
- ✅ Persistent storage (modelos)
- ✅ Docker Compose setup
- ✅ Network configuration
📦 Prerequisito: Docker
Instalar Docker:
macOS/Windows:
- Docker Desktop: https://www.docker.com/products/docker-desktop
Linux:
curl -fsSL https://get.docker.com | sh
Verificar:
docker --version
🚀 Run Ollama in Docker
Método 1: Docker run (simple):
docker run -d \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama
Explicación:
-d: Background-v ollama:/root/.ollama: Persistent storage (modelos)-p 11434:11434: Expone puerto--name ollama: Nombre container
Pull modelo dentro del container:
docker exec -it ollama ollama pull mistral
Test API:
curl http://localhost:11434/api/tags
🐳 Método 2: Docker Compose (recomendado)
docker-compose.yml:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
environment:
- OLLAMA_HOST=0.0.0.0
volumes:
ollama_data:
Start:
docker-compose up -d
Stop:
docker-compose down
Logs:
docker-compose logs -f ollama
🖥️ Con GPU (NVIDIA)
Dockerfile con CUDA:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
ollama_data:
Prerequisito: NVIDIA Container Toolkit
📦 Stack Completo: Ollama + App
docker-compose.yml (Ollama + Python app):
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
chatbot:
build: .
container_name: chatbot
depends_on:
- ollama
environment:
- OLLAMA_BASE_URL=http://ollama:11434
ports:
- "8000:8000"
volumes:
ollama_data:
Dockerfile (Python app):
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY chatbot.py .
CMD ["python", "chatbot.py"]
requirements.txt:
openai==1.12.0
chatbot.py:
from openai import OpenAI
import os
client = OpenAI(
base_url=os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") + "/v1",
api_key="ollama"
)
# Tu código de chatbot aquí
Start stack:
docker-compose up -d
🔧 Management Commands
Pull modelo:
docker exec ollama ollama pull mistral
List modelos:
docker exec ollama ollama list
Logs:
docker logs ollama -f
Restart:
docker restart ollama
Exec interactivo:
docker exec -it ollama bash
📊 Production Best Practices
1. Health checks:
services:
ollama:
# ... config ...
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 30s
timeout: 10s
retries: 3
2. Resource limits:
services:
ollama:
# ... config ...
deploy:
resources:
limits:
memory: 16G
cpus: '4'
3. Logging:
services:
ollama:
# ... config ...
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
🐛 Troubleshooting
Error: Cannot connect
# Verifica container running
docker ps
# Verifica logs
docker logs ollama
Error: Out of memory
# Aumenta memory limit
docker update --memory 16g ollama
✅ Resumen
- Ollama en Docker: Production-ready
- Persistent storage con volumes
- Docker Compose: Multi-container
- GPU support (opcional)
- Health checks y resource limits
Siguiente: 07-performance-tuning.md
Optimizarás performance de Ollama (GPU, RAM, quantization).
Tiempo: 20 min