🔍 ¿Qué es LXC ?
LXC (Linux Containers) es una tecnología de virtualización a nivel de sistema operativo que permite ejecutar múltiples sistemas Linux aislados, conocidos como contenedores (CTs), en un único host. A diferencia de las Máquinas Virtuales (VMs) tradicionales que emulan hardware completo, los contenedores LXC comparten el kernel del host.
Esto se traduce en eficiencia :
- Arranque Instantáneo: Los contenedores se inician en segundos.
- Bajo Overhead: Consumo mínimo de RAM y CPU, permitiendo una mayor densidad de servicios en el mismo hardware.
- Integración Nativa: Se sienten como una VM ligera, con su propia IP y servicios, pero sin el peso del hipervisor.
Conceptos Clave en Proxmox
- Template (Plantilla): Imágenes de sistema operativo preconfiguradas (Ubuntu, Debian, Alpine, etc.) que sirven como base para tus contenedores.
- Contenedor Privilegiado: Tiene acceso casi total a los recursos del host. Más compatible, pero menos seguro.
- Contenedor No Privilegiado: Mapea los UIDs/GIDs, aislando el contenedor del host. Es la opción recomendada por seguridad.
- Bind Mount: Permite compartir un directorio del host de Proxmox directamente dentro de un contenedor. Ideal para datos compartidos.
- Integración con ZFS: Si usas ZFS como almacenamiento, los snapshots y clones de contenedores son casi instantáneos y muy eficientes en espacio.
🛠️ Comandos pct para LXC en Proxmox
Olvídate de lxc-*
. En Proxmox, el comando pct
(Proxmox Container Toolkit) manda. Comandos esenciales .
(Ejemplo: 100
es el ID de tu contenedor)
1. Gestión Básica del Ciclo de Vida
|
|
2. Configuración y Recursos
|
|
3. Snapshots y Backups
|
|
🧠 Buenas Prácticas
- Seguridad Primero: Usa siempre contenedores no privilegiados (
--unprivileged 1
al crear) a menos que una aplicación lo requiera específicamente (ej. Docker dentro de LXC). - Limita los Recursos: No asignes más CPU o RAM de la necesaria. Usa
--cpulimit
y--cpuunits
para controlar el rendimiento. - Usar
pct exec
para Comandos Rápidos: En lugar de entrar a la consola, puedes ejecutar comandos directamente desde el host. Es ideal para scripts de automatización.1 2
# Actualizar un contenedor sin entrar en él pct exec 100 -- apt update && apt upgrade -y
- Aprovecha ZFS: Si tienes la opción, usa ZFS para tu almacenamiento de contenedores. Los snapshots y clones son una maravilla.
- Plantillas Personalizadas: Una vez que tengas un contenedor base configurado a tu gusto (con tus usuarios, paquetes, etc.), crea una plantilla a partir de él para desplegar nuevos servicios en segundos.
1 2
# (Desde la GUI de Proxmox) Convertir CT a Plantilla pct set 100 --features nesting=1,fuse=1 --hookscript local:snippets/hookscript.pl
📊 Comparativa Rápida: LXC vs. Docker vs. VM
Característica | LXC (en Proxmox) | Docker | VM Tradicional |
---|---|---|---|
Aislamiento | Nivel de SO (medio-alto) | Nivel de Proceso (bajo) | Nivel de Hardware (muy alto) |
Overhead | Mínimo | Mínimo | Alto (RAM, CPU, Disco) |
Arranque | Instantáneo (< 3 seg) | Instantáneo (< 1 seg) | Lento (segundos a minutos) |
Gestión | Sistema completo (como una VM) | Aplicación única y efímera | Sistema completo |
Caso de Uso Ideal | Servicios de infraestructura (DNS, VPN, DBs) | Microservicios, aplicaciones web | Sistemas operativos diferentes (Windows, BSD) |
🎯 Casos de Uso Perfectos para LXC
- Servidores Web y Reverse Proxies: Nginx, Apache, Caddy, Nginx Proxy Manager.
- Servicios de Red: AdGuard Home, Pi-hole, Unbound, WireGuard.
- Bases de Datos Ligeras: SQLite, PostgreSQL, MariaDB para proyectos pequeños/medianos.
- Bots y Scripts de Automatización: Contenedores dedicados para bots de Discord, Telegram, o scripts de Python.
- Entornos de Desarrollo: Un contenedor por proyecto para aislar dependencias sin el peso de Docker.