Sí, varios contenedores multimedia pueden compartir una GPU cuando el controlador y el entorno de ejecución del host admiten el acceso simultáneo y cada contenedor recibe el dispositivo correctamente.
Normalmente, los contenedores no tienen la GPU en exclusiva como ocurre con una máquina virtual con asignación directa completa. Intel Quick Sync y AMD VA-API suelen exponer dispositivos de renderizado compartidos, mientras que los contenedores de NVIDIA pueden compartir una misma pila de controladores y GPU, sujetos a los límites del hardware, los controladores, los códecs, la memoria y las sesiones. Los conflictos aparecen cuando la orquestación asigna el dispositivo en exclusiva, los permisos son diferentes, los contenedores incluyen bibliotecas incompatibles o las transcodificaciones simultáneas superan la capacidad práctica de la GPU.
Confirma que el host admite cargas de trabajo simultáneas con GPU
Instala y verifica primero el controlador del host; después, ejecuta una transcodificación acelerada por hardware fuera de un contenedor o dentro de uno conocido y funcional. Registra el modelo de GPU, el controlador, los códecs de codificación y decodificación compatibles, la memoria y el uso observado.
Una conversación de la comunidad de TrueNAS informa de que varias aplicaciones pueden compartir la misma GPU cuando esta se expone para su uso, en lugar de asignarse como un recurso exclusivo de la aplicación. La diferencia está entre el acceso compartido al dispositivo y la asignación directa exclusiva.
Si un contenedor no puede usar la GPU de forma fiable, no añadas otro. Corrige el controlador del host, el dispositivo del kernel, el firmware o el entorno de ejecución antes de probar la simultaneidad.
Expón el dispositivo correcto a cada contenedor
En Intel y AMD, compara los nodos de tarjeta y renderizado de /dev/dri que se pasan a cada contenedor. En NVIDIA, compara el entorno de ejecución o la solicitud del dispositivo, las variables de dispositivos visibles y las capacidades del controlador.
Un caso de Jellyfin en NixOS describe cómo la misma GPU del host se comportaba de forma diferente entre contenedores porque cambiaron el entorno del sistema operativo y del dispositivo. Esto demuestra por qué el entorno de dispositivos y las bibliotecas coherentes importan más que copiar una línea de Compose.
Usa el conjunto mínimo de dispositivos que necesita cada aplicación y evita el modo privilegiado como solución rápida. Confirma que el nodo de renderizado o el dispositivo NVIDIA esperado aparece dentro de cada contenedor después de reconstruirlo.
Iguala los permisos y grupos de usuarios entre contenedores
Registra en el host el propietario y el grupo numéricos del dispositivo de renderizado; después, confirma que el proceso de cada contenedor tiene el grupo suplementario o los permisos correspondientes. Los nombres de usuario específicos de cada imagen pueden corresponder a distintos ID numéricos.
Un contenedor que muestra la GPU, pero no puede abrirla, puede recurrir a la transcodificación por software o informar de un error de permisos. Este fallo puede parecer un conflicto del dispositivo cuando el otro contenedor multimedia sigue funcionando.
Prueba cada contenedor por separado con el mismo archivo y códec. Mantén las correcciones de permisos explícitas en Compose para que las actualizaciones y recreaciones de la imagen no las eliminen.
Comprueba la compatibilidad de códecs, controladores y entornos de ejecución
Compara los códecs y filtros que cada aplicación solicita ejecutar en la GPU, incluidos H.264, HEVC, AV1, el mapeo de tonos, los subtítulos, el escalado y los filtros de OpenCL o CUDA. Una carga de trabajo puede requerir capacidades que otra nunca utiliza.
Una guía actual sobre la asignación directa de GPU para Jellyfin destaca la importancia de adaptar la configuración del contenedor a Intel QSV, NVIDIA NVENC o AMD VA-API, en lugar de tratar todas las rutas de aceleración por hardware como intercambiables. El entorno de ejecución debe coincidir con la familia de la GPU.
Mantén el controlador del host compatible con las bibliotecas del entorno de ejecución del contenedor y evita incluir controladores en conflicto dentro de contenedores multimedia individuales. Prueba por separado la decodificación, la codificación y el mapeo de tonos.
Mide los límites de sesiones simultáneas, memoria y temperatura
Inicia una transcodificación por hardware en cada contenedor y supervisa los procesos de la GPU, el uso, la carga del codificador y del decodificador, la memoria, la temperatura, los errores y la estabilidad de las transmisiones. Aumenta gradualmente la simultaneidad usando contenido multimedia representativo.
Una configuración de la comunidad de Proxmox describe varias instancias de Jellyfin transcodificando al mismo tiempo y verificando la actividad desde el host. También muestra que las sesiones simultáneas tienen límites prácticos determinados por el hardware y el software.
Una GPU compartida funciona cuando ambas aplicaciones siguen aceleradas y responden correctamente. Los tirones, los fallos al crear el codificador, los errores de memoria insuficiente, los reinicios térmicos o que una aplicación obligue a la otra a usar software indican que la carga supera el margen disponible.
Mantén separados los ajustes y los directorios de transcodificación al compartir la GPU
Asigna a cada contenedor multimedia su propia base de datos de configuración, caché, directorio de transcodificación, puertos e identidad. Comparte únicamente la biblioteca multimedia de solo lectura y el dispositivo de la GPU, a menos que las aplicaciones admitan explícitamente un directorio de estado común.
La guía de ZimaSpace sobre el aislamiento de dependencias entre contenedores ayuda a distinguir un conflicto de GPU de un fallo de base de datos, caché, red o montaje.
El diseño solo queda validado cuando ambos contenedores sobreviven a las reconstrucciones, usan la aceleración por hardware simultáneamente, respetan sus propios permisos y estados y se mantienen dentro de los límites de sesiones, memoria y temperatura. Usa GPU independientes o recurre al software cuando las cargas simultáneas no puedan ofrecer de forma fiable la calidad necesaria.
Soporte y Consejos
Más para leer

¿Puede Plex compartir una GPU con otro contenedor de Docker?
Plex y otro contenedor suelen poder acceder a la misma GPU, pero debes probar la compatibilidad de los controladores, la asignación de dispositivos, la...

Cómo saber si un error de Plex proviene del cliente o del servidor
Reproduce el mismo elemento en otro cliente, compara la ruta de la sesión y recopila pruebas del servidor solo después de que el alcance...

Cómo configurar la caché de Plex y el almacenamiento temporal para la transcodificación
Protege el estado persistente de Plex mientras colocas los archivos temporales de transcodificación en un almacenamiento local adecuado; después, verifica la limpieza, el espacio...

