Elige un contenedor LXC de Proxmox para el host de Docker cuando los nodos de dispositivo Linux puedan exponerse de forma segura, el host gestione los controladores de GPU o USB necesarios y sean importantes la baja sobrecarga o el uso compartido de la GPU. Elige una VM cuando el sistema invitado deba gestionar la pila de controladores, un dispositivo PCI deba aislarse mediante IOMMU o Docker y su acceso al hardware deban mantenerse independientes del host Proxmox. Los dispositivos USB serie suelen adaptarse a cualquiera de las dos opciones; el paso exclusivo de GPU suele favorecer una VM.
Define «paso de dispositivos» antes de comparar LXC y una VM
LXC y KVM no asignan hardware a las cargas de trabajo de la misma manera. Un contenedor LXC comparte el kernel de Proxmox, por lo que normalmente recibe permiso para acceder a nodos de dispositivo creados por el host, como `/dev/dri`, `/dev/ttyUSB0` o `/dev/bus/usb`. El host sigue detectando el hardware y cargando el controlador del kernel.
Una VM ejecuta su propio kernel. Proxmox puede emular un dispositivo USB, conectar un dispositivo o puerto USB seleccionado, o asignar un dispositivo PCI mediante VFIO e IOMMU. El sistema invitado carga entonces su propio controlador y trata el hardware asignado de forma más parecida a un dispositivo instalado directamente.
La guía actual de configuración de NAS con Proxmox de ZimaSpace presenta ambos tipos de sistemas invitados. Este artículo limita la decisión a un host de Docker cuyos contenedores necesitan dongles USB, adaptadores serie, GPU multimedia o aceleradores de cómputo.
| Criterio de decisión | Docker dentro de Proxmox LXC | Docker dentro de una VM |
|---|---|---|
| Kernel | Comparte el kernel del host Proxmox | Ejecuta un kernel invitado independiente |
| Acceso USB | Expone los nodos de dispositivo y los permisos del host | Conecta el dispositivo USB o puerto seleccionado al sistema invitado |
| Acceso a la GPU | Normalmente comparte el controlador cargado por el host y los dispositivos de renderizado | Puede recibir un dispositivo PCI exclusivo mediante VFIO |
| Sobrecarga de recursos | Menor sobrecarga de memoria y almacenamiento | Memoria y almacenamiento adicionales para el sistema operativo invitado |
| Aislamiento | Mayor dependencia del host y un límite de kernel compartido | Mayor separación entre controladores y kernels |
| Portabilidad | Depende de dispositivos, controladores, identificadores y asignaciones compatibles en el host | El estado de los controladores invitados viaja con la VM, pero las asignaciones físicas de PCI siguen siendo específicas del host |
| Uso compartido de GPU | Varios contenedores pueden usar el mismo dispositivo de renderizado del host cuando es compatible | El paso de un dispositivo completo normalmente lo dedica a una sola VM |
| Mejor opción | Medios, USB serie y servicios de GPU Linux compartidos | Aceleradores exclusivos, controladores propietarios, mayor aislamiento y necesidades de distintos sistemas operativos invitados |
Los dispositivos USB favorecen LXC cuando se comportan como nodos de dispositivo Linux estables
Los adaptadores USB serie, los coordinadores Zigbee, las interfaces de UPS, los aceleradores Coral USB y dispositivos similares pueden funcionar bien en LXC cuando Proxmox expone el nodo de dispositivo y asigna la propiedad correcta. El contenedor de Docker dentro de LXC recibe entonces ese dispositivo desde su entorno de host Linux.
Una explicación práctica del acceso USB dentro de Proxmox LXC muestra el patrón subyacente: montar el dispositivo no basta si el contenedor tampoco tiene permiso para acceder a él.
Usa rutas estables como `/dev/serial/by-id` cuando la aplicación las admita. Los números de bus y las asignaciones de `/dev/ttyUSB0` pueden cambiar después de un reinicio o una reconexión. La opción LXC se vuelve frágil cuando cada actualización del host requiere reparar manualmente cgroups, UID, GID o rutas de dispositivos.
Una máquina virtual es más limpia cuando la propiedad del USB debe ser autónoma
Una máquina virtual puede recibir un dispositivo USB por su ID de fabricante y producto o por un puerto físico, y después cargar el controlador del dispositivo dentro de su propio sistema operativo. Esto resulta útil cuando el dispositivo necesita un paquete del fabricante, una versión distinta del kernel o una pila de aplicaciones que no debería depender de las bibliotecas del host de Proxmox.
La máquina virtual también crea un límite de diagnóstico más claro. Si el invitado pierde el dispositivo USB, el administrador puede inspeccionar por separado la conexión del hipervisor y el controlador del invitado. En LXC, el controlador del host, el nodo de dispositivo, los permisos, la asignación del contenedor, el entorno de ejecución de Docker y la aplicación participan en una misma cadena.
La contrapartida es el comportamiento tras la reconexión. Algunos dispositivos USB se restablecen, cambian de identidad o desaparecen durante el reinicio del invitado. Prueba a desconectar el dispositivo, reiniciar el host, reiniciar el invitado y recuperar la aplicación en lugar de asumir que una primera conexión correcta demuestra un funcionamiento estable.
El acceso compartido a la GPU suele favorecer a LXC
En dispositivos de renderizado Intel o AMD y cargas de trabajo NVIDIA compatibles, LXC puede exponer los nodos de dispositivo de la GPU del host a varios servicios de Linux. La GPU sigue gestionada por el controlador del host de Proxmox, lo que permite que varios contenedores utilicen transcodificación por hardware o cómputo sin asignar todo el dispositivo PCI a un único invitado.
El reciente ejemplo de Proxmox de XDA explica cómo LXC puede compartir la GPU gestionada por el host en lugar de dedicarla mediante passthrough a una máquina virtual. El mismo modelo operativo puede servir para Jellyfin, Plex, Frigate o varios servicios de Docker cuando coinciden los requisitos de controladores y permisos.
Compartirla crea una dependencia entre versiones. El controlador del kernel del host, las bibliotecas del espacio de usuario dentro de LXC, la integración del entorno de ejecución de Docker y los paquetes de la aplicación deben seguir siendo compatibles. Por tanto, una actualización del kernel o del controlador de Proxmox puede afectar simultáneamente a todos los contenedores que usan la GPU.
La asignación exclusiva de la GPU suele favorecer a una máquina virtual
Una máquina virtual es la opción más sólida cuando una carga de trabajo necesita la propiedad directa de una GPU dedicada, un controlador propietario en el sistema invitado, compatibilidad con Windows, aislamiento de CUDA o una pila del kernel que no debería instalarse en Proxmox. La asignación mediante VFIO separa el dispositivo del host y lo presenta al sistema invitado.
El modelo PCI de Proxmox está diseñado para asignar un dispositivo PCI físico a un invitado KVM. Un debate de Level1Techs sobre Docker resume la consecuencia práctica: una máquina virtual normalmente consume la GPU asignada en exclusiva, mientras que LXC puede compartir el acceso del host al dispositivo entre servicios.
Esta elección puede invertirse cuando la GPU admite dispositivos mediados o SR-IOV, pero las GPU de consumo y las plataformas de servidores domésticos no ofrecen una vía universal para compartirla. Verifica los grupos IOMMU, el comportamiento del restablecimiento, el firmware, la inicialización de la pantalla y si el host necesita esa GPU antes de diseñar la solución en torno a una asignación exclusiva.
Docker dentro de LXC añade una capa de gestión anidada
LXC ya proporciona aislamiento a nivel del sistema operativo, y Docker añade otro entorno de ejecución de contenedores dentro de él. Esto puede ser eficiente, pero introduce espacios de nombres, cgroups, controladores de almacenamiento, capacidades y comportamiento de montajes anidados. Algunas funciones de Docker requieren opciones de anidamiento o permisos adicionales en el contenedor de Proxmox.
Una máquina virtual presenta a Docker un host Linux convencional. La documentación de Docker, los módulos del kernel, el comportamiento del firewall y los controladores de almacenamiento son más fáciles de interpretar porque el sistema invitado controla la configuración de su kernel. El costo es un sistema operativo invitado completo, memoria reservada, gestión de discos virtuales y otra capa de parches.
No elijas LXC solo para ahorrar unos cientos de megabytes si la configuración necesaria obliga a usar un contenedor privilegiado, permisos amplios para dispositivos y modificaciones del host no documentadas. La opción ligera pierde valor cuando cada actualización depende de recordar excepciones que la máquina virtual contendría dentro del sistema invitado.
El aislamiento y la seguridad pueden invertir el ganador en rendimiento
LXC comparte el kernel del host, por lo que un contenedor privilegiado mal configurado o una asignación de dispositivos demasiado amplia puede exponer más partes del nodo de Proxmox de lo previsto. Un LXC sin privilegios, permisos de dispositivo limitados, montajes de solo lectura y capacidades mínimas mejoran el límite, pero la arquitectura sigue estando más acoplada que una máquina virtual completa.
Una máquina virtual proporciona un kernel independiente y puede aislar las pilas de GPU propietarias, las redes de Docker, los módulos del cortafuegos y el software experimental de la base de Proxmox. Esa separación es valiosa cuando el host de Docker ejecuta imágenes de terceros, servicios públicos, paquetes de IA local o experimentos frecuentes con controladores.
La máquina virtual no es segura automáticamente. El passthrough de PCI, los montajes de almacenamiento compartido, las credenciales de administración y las redes en puente siguen creando vectores de ataque y puntos de fallo. Elígela cuando el límite independiente entre el kernel y los controladores realmente simplifique el modelo de amenazas y mantenimiento.
Las copias de seguridad y la migración favorecen distintos tipos de simplicidad
Las copias de seguridad de LXC son compactas y rápidas porque el invitado no contiene una pila completa de hardware virtual. Sin embargo, restaurar el acceso al hardware en otro nodo de Proxmox requiere que coincidan los nodos de dispositivo, los grupos, los controladores y los permisos. El sistema de archivos del contenedor puede migrarse, pero el contrato del dispositivo físico no.
Una copia de seguridad de una máquina virtual contiene el sistema operativo invitado y la configuración de los controladores, lo que hace que la recuperación de la aplicación sea más autosuficiente. Las conexiones USB y las direcciones PCI aún deben reasignarse en el destino, y una GPU pasada a la máquina virtual puede impedir la migración en vivo porque el dispositivo físico está vinculado a un solo nodo.
El flujo de trabajo de copias de seguridad de Proxmox de ZimaSpace cubre la protección del invitado. Para esta comparación, la recuperación solo está completa cuando Docker se inicia y la aplicación dependiente del USB o la GPU puede detectar el dispositivo de reemplazo.
Usa una prueba de recuperación del dispositivo antes de elegir el tipo de invitado
- Enumera todos los dispositivos USB y PCI que requieren las aplicaciones de Docker.
- Decide si cada dispositivo debe compartirse con el host o ser propiedad de un solo invitado.
- Prueba el controlador del host, el nodo de dispositivo, la asignación de UID/GID y los permisos de Docker para LXC.
- Prueba la agrupación de IOMMU, la instalación del controlador del invitado y el comportamiento del restablecimiento en una máquina virtual.
- Reinicia el host de Proxmox y confirma que la conexión del dispositivo se restablece automáticamente.
- Restaura el invitado desde la copia de seguridad y vuelve a crear la asignación de hardware a partir de la documentación.
- Repite la prueba en otro nodo compatible si la migración o la sustitución del hardware son importantes.
Mide el comportamiento de la aplicación en lugar de fijarte solo en la sobrecarga del invitado. La estabilidad de la transcodificación por hardware, la reconexión USB, las actualizaciones de controladores, el mantenimiento del host y el tiempo de recuperación suelen importar más que una pequeña diferencia de CPU entre LXC y KVM.
¿Qué invitado de Proxmox es adecuado para el host de Docker?
Elige LXC cuando
Elige LXC cuando todas las cargas de trabajo estén basadas en Linux, el host pueda gestionar los controladores, los dispositivos USB expongan nodos estables y una GPU deba compartirse entre varios servicios. Mantén el contenedor sin privilegios siempre que sea posible y documenta cada asignación de dispositivo y grupo.
Elige una máquina virtual cuando
Elige una máquina virtual cuando el host de Docker necesite la propiedad exclusiva de una GPU PCI, controladores propietarios o experimentales, un aislamiento del kernel más sólido o una mayor facilidad para trasladar la pila de software completa. Reserva suficiente RAM y almacenamiento para el invitado y prueba el reinicio del dispositivo después de reiniciar el sistema.
Divide las cargas de trabajo cuando
Ejecuta servicios ligeros de multimedia y USB en LXC, y coloca en una máquina virtual las cargas de cálculo exclusivas de GPU, las herramientas que dependen de Windows o las pilas de Docker que no sean de confianza. Una plataforma compatible con Proxmox puede admitir ambas opciones, pero cada dispositivo físico debe tener un único modelo de propiedad documentado.
Preguntas frecuentes
¿Puede Docker ejecutarse de forma fiable dentro de un LXC sin privilegios?
Sí, para muchas cargas de trabajo, pero la virtualización anidada, los controladores de almacenamiento, los montajes, la red y el acceso a los dispositivos pueden requerir configuración adicional. Prueba las funciones exactas de Docker y evita cambiar a un contenedor privilegiado simplemente para eludir un problema de permisos sin explicación.
¿Puede una misma GPU ser utilizada por un LXC y una máquina virtual?
No mediante un passthrough VFIO convencional del dispositivo completo al mismo tiempo. LXC puede compartir un dispositivo de renderizado gestionado por el host, mientras que una máquina virtual normalmente necesita que el dispositivo se desconecte del host. La compatibilidad con SR-IOV o dispositivos mediados puede cambiar esto en hardware específico.
¿Qué opción es mejor para un coordinador Zigbee USB?
Cualquiera de las dos opciones puede funcionar. LXC es eficiente cuando una ruta serial estable basada en el ID y los permisos son fiables. Una máquina virtual es más limpia cuando la pila de software o el controlador del coordinador deben permanecer independientes del host Proxmox.
Veredicto final
Usa LXC para alojar Docker cuando los recursos USB y de GPU puedan compartirse mediante la pila de controladores Linux del host Proxmox y sea importante reducir la sobrecarga. Usa una máquina virtual cuando el hardware deba pertenecer al invitado, los controladores deban estar aislados o la recuperación deba conservar un sistema operativo autosuficiente. Elige según la propiedad del dispositivo y el comportamiento de restauración, no suponiendo que los contenedores siempre son más sencillos.
Comparaciones de productos
Más para leer

Túnel VPS frente al reenvío de puertos del hogar para servicios autoalojados públicos: ¿qué ruta de entrada es más fácil de controlar?
Usa el reenvío de puertos para la ruta directa más sencilla; usa un túnel VPS cuando importen la CGNAT, la privacidad de la dirección,...

Router doméstico frente a firewall dedicado para un laboratorio doméstico segmentado: ¿cuándo conviene separar la puerta de enlace?
Conserva el router de consumo mientras la segmentación siga siendo sencilla; cambia a un firewall dedicado cuando las políticas, la visibilidad, las interfaces o...

Laboratorio de capa 2 frente a VLAN enrutadas a medida que crece tu laboratorio doméstico: ¿cuándo debería acercarse la puerta de enlace al extremo?
Mantén la Capa 2 mientras una puerta de enlace y algunos enlaces troncales sigan siendo fáciles de gestionar; enruta más cerca del extremo cuando...

