Backup, clonado y acarreo de containers LXC - perfeccion-ar/infraestructura-clasica-y-avanzada GitHub Wiki

Crear una nueva imagen a partir de un contenedor - Clonación sencilla

Supongamos que tenemos un container dev01, creado con algún comando parecido a este:

lxc launch ubuntu:22.04 dev01

Supón ahora que necesitas un nuevo contenedor llamado "desarrollo", basado en dev01. Solo debemos hacer:

$ lxc stop dev01
$ lxc publish dev01 --alias=dev01-image
$ lxc start dev01  # ¡Vuelve a trabajar, Eduardo!

Si no quieres detener el contenedor, puedes crear, y luego publicar una snapshot del contenedor como una imagen.

lxc snapshot dev01 dev01-snapshot-01
lxc publish dev01/dev01-snapshot-01 --alias dev01-image

Para aprender más sobre snapshots de containers, sigue este link.

Ahora, puedes generar un nuevo contenedor basado en la nueva imagen. Será una especie de clon de dev01, llamado desarrollo.

lxc launch dev01-image desarrollo

Y disfruta de tu nuevo container clonado.

Transferencia de una imagen a un host diferente

En el Host origen:

Sigue los siguientes comandos para "exportar" tu contenedor como una imagen. O incluso mejor, como un archivo que te puedas llevar. Es lo mejor, si no has puesto a tu LXD en modo cluster. Incluso puedes versionar y almacenar tus imágenes (v1, v2, etc.)

$ lxc image export dev01-image dev01-image-exported-v1.tar.gz

Esto generará un archivo dev01-image-exported-v1.tar.gz en el directorio actual. Ahora puedes transferir este archivo al host destino. Usa scp, rsync, ftp, etc.

En el Host destino: allí debes importar en vez de exportar.

$ lxc image import dev01-image-exported-v1.tar.gz --alias=dev01-image-exported-v1

Ahora, puedes crear en el destino un nuevo contenedor "dev02", basado en esa imagen, llamándolo por su alias

$ lxc launch dev01-image-exported-v1 dev02

Errores asociados al importar nuevos contenedores

  • El pool zfs está completamente lleno con la nueva imagen. Mostrará No space left on device (No hay espacio en el dispositivo), a pesar de que / del host tenga suficiente espacio. Verifica esto con sudo zpool list y luego ejecuta Aumentando el espacio para contenedores [invalid URL removed]
  • Sin IP en el contenedor (container "ciego de red", ej: no anda apt-get update). Si tienes Docker ademas de LXD: puede que te hayas salteado los cuidados a tener en cuenta, durante la instalación de LXD, vuelve a revisar esta sección.