ADR-018: LXC como unidad de aislamiento (sobre Docker para todo)¶
Estado: aceptado Fecha: 2026-05-17
Contexto¶
SmallCountry necesita aislar sus servicios para evitar conflictos de dependencias, contener fallos y facilitar la operación. Docker ofrece simplicidad y un ecosistema enorme, pero opera a nivel de proceso sin kernel propio, lo que limita el aislamiento real y la integración con Proxmox, el hipervisor ya elegido para la infraestructura.
Decisión¶
Usar contenedores LXC sobre Proxmox como mecanismo de aislamiento estándar para todos los servicios. Docker se usará únicamente cuando LXC resulte impráctico (por ejemplo, imágenes que solo se distribuyen como OCI o stacks complejos con docker-compose ya consolidados). Cada servicio corre en su propio LXC con una responsabilidad única.
Alternativas consideradas¶
| Opción | Por qué se descartó |
|---|---|
| Docker Compose para todo | Aislamiento débil (comparten kernel con el host). Integración pobre con el modelo de redes y almacenamiento de Proxmox. Dificulta backups a nivel de filesystem con ZFS. |
| Kubernetes (k3s) | Sobredimensionado para un entorno mononodo o de pocos nodos. El overhead operativo no se justifica para la escala de SmallCountry. |
| Bare metal (sin contenedores) | Sin aislamiento entre servicios. Un error de configuración en un servicio puede tumbar otros. Dificulta migración y replicación. |
| ## Consecuencias | |
| - ✅ Aislamiento real a nivel de kernel: cada LXC tiene su propio espacio de nombres, límites de recursos (CPU, RAM, disco) controlados por Proxmox. | |
| - ✅ Integración nativa con Proxmox: backups via vzdump, snapshots ZFS, migración en vivo entre nodos, plantillas de aprovisionamiento rápido. | |
| - ✅ Redes segmentadas: cada LXC se conecta a vmbrs específicas según su nivel (admin, servicios, IoT). | |
| - ✅ Sobrecarga mínima comparada con VMs completas. | |
| - ❌ Mayor verbosidad operativa que Docker Compose: levantar un servicio nuevo requiere crear/actualizar un LXC, no solo un docker-compose up. | |
| - ❌ El ecosistema de imágenes LXC/LXD es más pequeño que Docker Hub. Algunos servicios requerirán instalación manual dentro del LXC. | |
| - ❌ Docker sigue presente como excepción, por lo que el equipo debe conocer ambas tecnologías. | |
| ## Referencias | |
| - Ficha: Proxmox | |
| - Ficha: Docker | |
| - Principio 3: Aislamiento |