Ejecutar Ollama en Docker
Qué cubre este artículo sobre Ollama en Docker
- Por qué ejecutar Ollama en Docker.
- Instalación simple en Docker.
- Passthrough de GPU para NVIDIA y AMD.
- Configuración con Docker Compose.
- Consejos para persistencia y actualizaciones.
Introducción: Ejecutar Ollama en Docker
Ollama se suele instalar directamente en el host, pero también funciona muy bien dentro de un contenedor Docker. Esto simplifica las actualizaciones, el aislamiento y la reproducibilidad. Con passthrough de GPU, Docker puede ejecutar Ollama en la tarjeta gráfica, exactamente como una instalación nativa. Para homelabs y servidores, Docker ofrece una forma limpia de gestionar Ollama.
En este artículo aprenderás a instalar y configurar Ollama en Docker.
Conceptos clave
- Container: Entorno de ejecución aislado.
- Volume: Almacenamiento persistente.
- GPU Passthrough: Poner la GPU disponible en el contenedor.
- Compose: Definir múltiples contenedores de forma declarativa.
- NVIDIA Container Toolkit: Herramientas para GPU en Docker.
- runtime: Runtime del contenedor para GPU.
- .ollama: Directorio de datos de Ollama.
- Port Mapping: Redirección de un puerto del host al contenedor.
Comando Docker simple
docker run -d \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama
Con GPU NVIDIA
Requisito previo: NVIDIA Container Toolkit instalado.
docker run -d \
--gpus all \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama
Con GPU AMD
docker run -d \
--device /dev/kfd \
--device /dev/dri \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama:rocm
Docker Compose
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
ollama-data:
Compose con GPU NVIDIA
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
ollama-data:
Compose para AMD
services:
ollama:
image: ollama/ollama:rocm
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
devices:
- /dev/kfd
- /dev/dri
volumes:
ollama-data:
Descargar un modelo
docker exec -it ollama ollama pull llama3.1
Verificación
curl http://localhost:11434/api/tags
Actualizaciones
docker pull ollama/ollama:latest
docker stop ollama
docker rm ollama
docker compose up -d
O simplemente con Compose:
docker compose pull
docker compose up -d
Respaldar datos
El volume ollama-data contiene los modelos y la configuración:
docker run --rm -v ollama-data:/data -v $(pwd):/backup alpine \
tar -czf /backup/ollama-backup.tar.gz -C /data .
Ventajas
- Actualizaciones sencillas.
- Instalación reproducible.
- Aislamiento del host.
- Integración fácil en entornos Compose.
- Escalabilidad en servidores.
Limitaciones
- El passthrough de GPU requiere drivers y toolkit correctos.
- USB y dispositivos no siempre son simples de mapear.
- Hay que tener en cuenta los permisos en el volume.
Consejos
- Mantén el volume persistente.
- No almacenes modelos en la capa del contenedor.
- Reinicia el contenedor en lugar de eliminarlo cuando sea posible.
- Usa tags específicas en lugar de
latesten producción. - Revisa los logs regularmente.
- Instala los drivers de GPU previamente.
Problemas comunes
- GPU no detectada: Falta NVIDIA Container Toolkit o ROCm.
- GPU sin visibilidad: Usa
deploy.resourcesen lugar deruntime: nvidiaen versiones nuevas de Docker Compose. - Volume eliminado: Los modelos desaparecen.
- Problemas de permisos: El contenedor se ejecuta como root.
- Imágenes más recientes:
latestpuede traer cambios inesperados.
Enlaces y recursos útiles
- BotServ.de Acceso remoto a Ollama
- BotServ.de GPU Passthrough en Docker
- BotServ.de Docker Compose
- BotServ.de Soporte de GPU en Ollama
Preguntas frecuentes: Ollama en Docker
¿Necesito una GPU? No, pero sin GPU Ollama es más lento en CPU.
¿Cómo inicio Ollama en Docker?
Con ollama serve, la imagen lo hace automáticamente.
¿Dónde se almacenan los modelos?
En el volume /root/.ollama.
¿Puedo ejecutar múltiples contenedores de Ollama? Solo en puertos diferentes y con datos separados.
¿Qué imagen usar para AMD?
ollama/ollama:rocm.
Fuentes y referencias adicionales
- Ollama Docker Image: https://ollama.com/blog/ollama-is-now-available-as-an-official-docker-image
- NVIDIA Container Toolkit: https://github.com/NVIDIA/nvidia-container-toolkit
- Docker GPU: https://docs.docker.com/compose/gpu-support/
Resumen: Ejecutar Ollama en Docker
Ejecutar Ollama en Docker es una forma limpia y reproducible de usar modelos localmente o en un servidor. Con passthrough de GPU y un volume persistente, funciona casi como una instalación nativa. Las actualizaciones, copias de seguridad e integración en configuraciones Compose más grandes son más simples. Si configuras correctamente NVIDIA Container Toolkit o ROCm, obtendrás aceleración por GPU en el contenedor.


