Usar GPU en Docker
Qué cubre este artículo sobre GPU en Docker
- Por qué las GPUs en Docker son importantes.
- Instalar NVIDIA Container Toolkit.
- ROCm y GPUs AMD.
- Configuración de Docker Run y Compose.
- Solucionar problemas de detección de GPU.
Introducción: Usar GPU en Docker
Muchas aplicaciones de IA y computación requieren una GPU. Docker aísla las aplicaciones, pero gracias a las tecnologías modernas de contenedores es posible pasar GPUs a través de contenedores. NVIDIA ofrece NVIDIA Container Toolkit para esto, mientras que AMD apuesta por ROCm. Cuando integras correctamente GPUs en Docker, puedes ejecutar aplicaciones en contenedor con aceleración gráfica completa.
Este artículo explica cómo poner GPUs NVIDIA y AMD disponibles en Docker.
Conceptos clave
- NVIDIA Container Toolkit: Controladores y runtime para Docker.
- ROCm: Plataforma de código abierto de AMD para computación en GPU.
- runtime: Runtime del contenedor que expone la GPU.
- driver: Controlador en el host.
- CUDA: Plataforma de computación de NVIDIA.
- HIP: Equivalente de AMD a CUDA.
- /dev/nvidia0: Archivo de dispositivo NVIDIA.
- /dev/dri: Archivos de dispositivo AMD/Intel.
- capabilities: Capacidades del dispositivo GPU.
Preparar NVIDIA
- Instala el controlador NVIDIA.
- Instala NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Probar NVIDIA
docker run --rm --gpus all nvidia/cuda:12-base nvidia-smi
Docker Run con GPU
docker run --rm --gpus all \
-v ollama:/root/.ollama \
-p 11434:11434 \
ollama/ollama
Docker Compose para NVIDIA
services:
ollama:
image: ollama/ollama
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
ollama:
Preparar AMD/ROCm
- Instala el controlador AMDGPU.
- Instala los paquetes ROCm.
- Inicia contenedores con
/dev/driy/dev/kfd.
Probar AMD
docker run --rm --device /dev/kfd --device /dev/dri \
ollama/ollama:rocm ollama --version
Docker Compose para AMD
services:
ollama:
image: ollama/ollama:rocm
devices:
- /dev/kfd
- /dev/dri
volumes:
- ollama:/root/.ollama
ports:
- "11434:11434"
volumes:
ollama:
Qué GPUs se soportan
NVIDIA
- Maxwell y más nuevas.
- Volta, Turing, Ampere, Ada Lovelace.
- Soporte completo de CUDA.
AMD
- RDNA y RDNA2 con ROCm.
- Algunos modelos Radeon más antiguos.
- No todas las tarjetas consumer tienen soporte oficial.
Intel
- Arc y algunas GPUs integradas.
- El soporte crece, pero aún es menos común.
Verificar GPU dentro del contenedor
docker exec ollama nvidia-smi
O en AMD:
docker exec ollama rocminfo
Solución de problemas
- nvidia-smi no encontrado: Toolkit no instalado.
- Docker no detecta GPU: Runtime no configurado.
- Controlador muy antiguo: Actualiza el controlador NVIDIA.
- Error en ROCm: Verifica la versión correcta de ROCm.
- Sin /dev/dri: Revisa el controlador o permisos.
- OOM: Ten en cuenta el límite de VRAM del contenedor.
Consejos
- Mantén el controlador y el toolkit actualizados.
- Usa imágenes base con la versión correcta de CUDA/ROCm.
- Verifica
nvidia-smien el host primero. - Para Intel busca imágenes específicas.
- Adapta la sintaxis de Compose según tu versión de Docker.
Enlaces e información adicional
- BotServ.de Ollama en Docker
- BotServ.de Docker GPU-Passthrough
- BotServ.de Docker Container-Runtime
- BotServ.de GPU para IA local, guía de compra
FAQ: GPU en Docker
¿Necesito controladores especiales dentro del contenedor? No, se utiliza el controlador del host. El toolkit se encarga de exponerlo.
¿Funciona GPU en Docker en Windows? Solo con WSL2 y GPUs NVIDIA, no de forma nativa.
¿Cómo verifico la GPU dentro del contenedor?
Con nvidia-smi o rocminfo.
¿Por qué Docker no detecta la GPU? Generalmente falta NVIDIA Container Toolkit o la configuración de runtime de Docker.
¿Puedo asignar múltiples GPUs?
Sí, con --gpus '"device=0,1"' o count: all.
Fuentes y lecturas adicionales
- NVIDIA Container Toolkit: https://github.com/NVIDIA/nvidia-container-toolkit
- ROCm: https://rocm.docs.amd.com/
- Docker GPU: https://docs.docker.com/compose/gpu-support/
Resumen: Usar GPU en Docker
Las GPUs se pueden exponer cómodamente en contenedores Docker mediante NVIDIA Container Toolkit o ROCm. NVIDIA ofrece el soporte más maduro, mientras que AMD con ROCm también funciona bien en tarjetas compatibles. Lo importante es tener controladores del host actualizados, configurar correctamente el runtime y usar los ajustes adecuados en Compose. Cuando logres que nvidia-smi o rocminfo funcione dentro del contenedor, podrás ejecutar aplicaciones aceleradas por GPU como Ollama en Docker.


