Virtualización (Proxmox / KVM)

Contenedores LXC en Proxmox VE: plantillas, crear contenedores, IP y límites de recursos

7 pasos 15 min de lectura 23 vistas 0
Contenido

No todas las cargas de trabajo necesitan una máquina virtual completa. Los contenedores LXC de Proxmox VE comparten el kernel del host, arrancan en uno o dos segundos y usan mucha menos RAM y disco que las VM KVM, lo que los hace ideales para sitios web, bases de datos, monitorización, proxies y herramientas internas en un servidor dedicado o un nodo host. Esta guía explica cómo descargar plantillas de contenedor, crear contenedores en la interfaz web y con pct, asignarles una IP pública o privada, limitar la CPU, la memoria, el disco y el ancho de banda, ejecutar Docker dentro de un contenedor y hacer copias de seguridad.

Los contenedores LXC solo pueden ejecutar Linux y comparten el kernel del host: desde dentro de un contenedor no puede cargar sus propios módulos del kernel ni cambiar la mayoría de los parámetros del kernel. Use una máquina virtual KVM para Windows, kernels personalizados o cualquier servicio que venda a clientes que no sean de confianza.

¿Contenedor LXC o máquina virtual KVM?

Contenedor LXCMáquina virtual KVM
Sistemas operativosSolo LinuxLinux, Windows, BSD
SobrecargaMuy baja, arranca en segundosMayor, arranque completo del sistema operativo
AislamientoKernel compartidoTotalmente aislada
Ajuste del kernel y módulosLimitadoControl total
Uso típicoServicios propios, muchos sitios pequeñosVPS para clientes, Windows, hosts Docker

Paso 1: Descargar una plantilla de contenedor

Las plantillas son sistemas de archivos raíz ya preparados para Debian, Ubuntu, Rocky Linux, AlmaLinux, Alpine y otras distribuciones. En la interfaz web, abra local → CT Templates → Templates, o use la línea de comandos en el host. Los nombres de archivo de las plantillas incluyen un número de versión, así que copie el nombre exacto de la lista.

pveam update
pveam available --section system | grep -E 'debian-12|ubuntu-24.04|rockylinux-9|alpine'
pveam download local debian-12-standard_12.7-1_amd64.tar.zst   # use the exact name from the list
pveam list local

Paso 2: Crear un contenedor

En la interfaz web, haga clic en Create CT y siga el asistente: nombre de host y contraseña de root (o clave SSH), plantilla, tamaño de disco, núcleos de CPU, memoria y red. Deje marcada la opción Unprivileged container: asigna el root del contenedor a un usuario sin privilegios en el host y es mucho más seguro. El mismo contenedor desde la línea de comandos:

pct create 101 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname web01 \
  --unprivileged 1 \
  --cores 2 --memory 2048 --swap 512 \
  --rootfs local-lvm:20 \
  --net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1 \
  --nameserver 1.1.1.1 \
  --ssh-public-keys /root/.ssh/authorized_keys \
  --features nesting=1 \
  --onboot 1

pct start 101
pct enter 101          # open a root shell inside the container
pct list

Paso 3: Red con IP pública o NAT privada

IP pública: conecte el contenedor al bridge que transporta su red pública (normalmente vmbr0) y asígnele una de sus IPs adicionales con la puerta de enlace de esa subred, exactamente igual que en una VM (consulte asignar una IP pública a una VM de Proxmox). Si sus IPs adicionales están enrutadas a una dirección MAC concreta, indíquela con hwaddr= en las opciones de net0.

NAT privada: para ejecutar muchos contenedores detrás de la única IP del host, colóquelos en un bridge privado como vmbr1 y redirija los puertos que necesite, como se describe en red NAT en Proxmox VE:

pct set 102 --net0 name=eth0,bridge=vmbr1,ip=10.10.10.12/24,gw=10.10.10.1
pct reboot 102

Paso 4: Limitar CPU, memoria, disco y ancho de banda

Todos los límites se pueden cambiar con el contenedor en marcha; la mayoría se aplican de inmediato.

# CPU: 2 visible cores, but at most 1.5 cores of total CPU time
pct set 101 --cores 2 --cpulimit 1.5

# Memory and swap (MB)
pct set 101 --memory 1024 --swap 256

# Grow the root disk by 10 GB (disks can grow online but not shrink)
pct resize 101 rootfs +10G

# Bandwidth: rate is in MB/s, so 12.5 is roughly 100 Mbps
pct set 101 --net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1,rate=12.5

pct config 101

Paso 5: Ejecutar Docker dentro de un contenedor

Docker funciona en un contenedor sin privilegios cuando nesting está activado. Algunas imágenes también necesitan la función keyctl.

pct set 101 --features nesting=1,keyctl=1
pct reboot 101
pct enter 101
# inside the container, install Docker as usual (see our Docker guide)

Para hosts Docker de producción, sobre todo los que tienen muchos contenedores o drivers de almacenamiento especiales, una VM KVM sigue siendo la opción más predecible.

Paso 6: Copias de seguridad, snapshots y clonación

# Snapshot before risky changes (requires LVM-thin, ZFS or Ceph storage)
pct snapshot 101 before-upgrade
pct rollback 101 before-upgrade

# Full backup with compression (see our Proxmox backup guide for schedules)
vzdump 101 --mode snapshot --storage local --compress zstd

# Clone a container you have prepared as a base
pct clone 101 105 --hostname web05 --full 1

Para copias de seguridad programadas y restauraciones, consulte copias de seguridad y snapshots en Proxmox VE.

Preguntas frecuentes

¿Por qué el contenedor no tiene acceso a internet?

Compruebe la IP, el prefijo y la puerta de enlace en pct config, que el bridge sea el correcto y el DNS en /etc/resolv.conf dentro del contenedor. Desde dentro, pruebe ping -c3 1.1.1.1 y después ping -c3 google.com para distinguir los problemas de enrutamiento de los de DNS. Compruebe también que el firewall de Proxmox no esté bloqueando el contenedor.

¿Puedo convertir más adelante un contenedor en una VM?

No directamente. Cree una VM y migre los datos o la aplicación, por ejemplo con rsync (consulte nuestra guía de migración de servidores).

¿Cuántos contenedores puede ejecutar un servidor?

Depende de la carga de trabajo, no de Proxmox. Como los contenedores tienen muy poca sobrecarga, un servidor con 64 GB de RAM puede alojar sin problemas decenas de sitios web o servicios pequeños. Vigile la RAM, la E/S de disco y el CPU steal del host, y deje margen para los picos.

¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, la versión de Proxmox VE, el ID y la configuración del contenedor (pct config ID) y la salida completa del error para que podamos localizar el problema más rápido.

¿Fue útil la respuesta?

Tutoriales relacionados