LXC te permite crear “mini VPS” dentro de tu VPS. Aislamiento casi de máquina virtual con rendimiento casi nativo. Perfecto para separar servicios o clientes.
LXC vs Docker vs VM
| Aspecto | VM | LXC | Docker |
|---|---|---|---|
| Aislamiento | Total | Alto | Medio |
| Overhead | Alto (~10%) | Mínimo (~1%) | Mínimo |
| Arranque | Minutos | Segundos | Segundos |
| Uso | SO completo | SO completo | App única |
| Ideal para | Producción crítica | Multi-servicio | Microservicios |
LXC: Lo mejor de ambos mundos. Aislamiento fuerte, rendimiento nativo.
Instalar LXD (gestor de LXC)
# Ubuntu 22.04+
sudo snap install lxd
# Inicializar
sudo lxd init
Configuración inicial recomendada
Would you like to use LXD clustering? no
Do you want to configure a new storage pool? yes
Name of the new storage pool: default
Name of the storage backend: dir
Would you like to connect to a MAAS server? no
Would you like to create a new local network bridge? yes
What should the new bridge be called? lxdbr0
What IPv4 address should be used? auto
What IPv6 address should be used? auto
Would you like LXD to be available over the network? no
Would you like stale cached images to be updated automatically? yes
Would you like a YAML "lxd init" preseed? no
Comandos básicos
# Listar imágenes disponibles
lxc image list images:
# Crear contenedor Ubuntu
lxc launch ubuntu:22.04 mi-contenedor
# Listar contenedores
lxc list
# Entrar al contenedor
lxc exec mi-contenedor -- bash
# Parar/iniciar
lxc stop mi-contenedor
lxc start mi-contenedor
# Eliminar
lxc delete mi-contenedor --force
Caso práctico: Separar servicios
Estructura
VPS Host
├── web-container (Nginx + PHP)
├── db-container (MySQL)
└── mail-container (Postfix)
Crear contenedor web
# Crear
lxc launch ubuntu:22.04 web
# Instalar stack
lxc exec web -- apt update
lxc exec web -- apt install nginx php8.2-fpm -y
# Configurar puerto
lxc config device add web http proxy \
listen=tcp:0.0.0.0:80 \
connect=tcp:127.0.0.1:80
Crear contenedor base de datos
# Crear
lxc launch ubuntu:22.04 db
# Instalar MySQL
lxc exec db -- apt update
lxc exec db -- apt install mariadb-server -y
# Obtener IP del contenedor
lxc list db -c4 --format csv
# Ejemplo: 10.10.10.5
Conectar web a DB
# Desde contenedor web, conectar a DB por IP interna
# MySQL host: 10.10.10.5
Limitar recursos
# Limitar RAM
lxc config set mi-contenedor limits.memory 1GB
# Limitar CPU
lxc config set mi-contenedor limits.cpu 2
# Limitar disco
lxc config device set mi-contenedor root size 10GB
# Ver límites
lxc config show mi-contenedor
Networking
Red por defecto (NAT)
Los contenedores comparten la IP del host mediante NAT.
# Exponer puerto 80 del contenedor
lxc config device add web http proxy \
listen=tcp:0.0.0.0:80 \
connect=tcp:127.0.0.1:80
IP dedicada por contenedor
# Configurar bridge con IPs públicas (avanzado)
# Requiere IPs adicionales del proveedor
Snapshots y backups
# Crear snapshot
lxc snapshot mi-contenedor snap1
# Listar snapshots
lxc info mi-contenedor
# Restaurar
lxc restore mi-contenedor snap1
# Exportar contenedor
lxc export mi-contenedor backup.tar.gz
# Importar
lxc import backup.tar.gz nuevo-contenedor
Caso: Aislar clientes
# Contenedor por cliente
lxc launch ubuntu:22.04 cliente1
lxc launch ubuntu:22.04 cliente2
lxc launch ubuntu:22.04 cliente3
# Cada uno con su propio stack
# Aislamiento total entre clientes
# Si uno se compromete, otros seguros
Ventajas vs usuarios separados
| Aspecto | Usuarios | LXC |
|---|---|---|
| Aislamiento | Permisos | Sistema completo |
| Un cliente hackeado | Puede afectar | Contenido |
| Recursos | Compartidos | Limitables |
| Gestión | Compleja | Simple |
Monitorización
# Uso de recursos por contenedor
lxc info mi-contenedor
# Todos los contenedores
lxc list -c ns4,memory,disk
# Procesos dentro del contenedor
lxc exec mi-contenedor -- top
LXC vs Docker: Cuándo usar cada uno
Usa LXC cuando:
- Necesitas SO completo (systemd, cron, etc.)
- Quieres aislar clientes/servicios
- Migras desde VMs
- Servicios tradicionales (LAMP, mail)
Usa Docker cuando:
- Apps stateless
- Microservicios
- CI/CD
- Ya tienes Dockerfiles
Pueden coexistir
VPS
├── LXC: cliente1 (WordPress completo)
├── LXC: cliente2 (Magento)
└── Docker: tus microservicios
Preguntas frecuentes
¿LXC funciona en cualquier VPS?
Necesitas VPS con virtualización KVM. OpenVZ generalmente no soporta LXC. Verifica con tu proveedor que puedas usar contenedores anidados.
¿Cuántos contenedores puedo crear?
Depende de recursos. Con 4GB RAM, cómodamente 3-5 contenedores ligeros. Con 8GB, 5-10. El límite es tu RAM y disco.
¿LXC es seguro para producción?
Sí. LXC es maduro y usado en producción por muchas empresas. El aislamiento es muy bueno aunque no tan completo como VMs reales.
¿Puedo mover contenedores entre VPS?
Sí. Exporta con 'lxc export', transfiere el archivo, e importa en el nuevo VPS con 'lxc import'.
¿LXC consume muchos recursos?
No. El overhead es mínimo (~1% CPU). Un contenedor Ubuntu mínimo usa ~50-100MB RAM. Mucho más eficiente que VMs.
Nuestra recomendación
Usa LXC para:
- Aislar clientes en tu VPS
- Separar servicios (web, DB, mail)
- Crear entornos de prueba
- Migrar desde VMs a algo más ligero
No necesitas LXC si:
- Solo tienes un sitio web
- Docker cubre tus necesidades
- Tu VPS es OpenVZ
¿Buscas VPS compatible con LXC? Los VPS KVM de Avantys soportan contenedores LXC y Docker sin restricciones.
Conclusión
LXC ofrece aislamiento casi de VM con rendimiento casi nativo. Ideal para separar servicios o clientes en un solo VPS.
Una vez que lo pruebas, te preguntas cómo vivías sin él.
¿Quieres que lo hagamos por ti?
En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.