Docker es una solución popular diseñada para contener una sola aplicación: por ejemplo, un servidor de base de datos MySQL. LXD es similar en algunos aspectos, pero está diseñado para contener un sistema operativo completo. Esto lo hace útil para algunos escenarios. Por ejemplo, puede girar un contenedor LXD, instalar un servidor de base de datos y un servidor http. A continuación, puede crear un sitio web de WordPress en su interior. Ahora puede cambiar de nube a nube simplemente moviendo este contenedor LXD donde sea necesario cuando no esté satisfecho con su proveedor anterior. Y como es fácil clonar un contenedor, puede incluso subir su sitio web a varios proveedores de cloud para crear una configuración redundante y de alta disponibilidad.
LXD no virtualiza hardware como QEMU o VirtualBox, lo que significa que es muy rápido, ofreciendo una velocidad de ejecución casi nativa.
Instalar y configurar LXD
Abra un terminal e instale LXD, además de las utilidades de ZFS, que le ayudarán a acelerar algunas operaciones y ahorrar espacio en disco cuando trabaje con contenedores.
sudo apt install zfsutils-linux lxd
Iniciar la configuración de LXD.
sudo lxd init
Pulse ENTER para seleccionar los valores por defecto.
Para Tamaño en GB del nuevo dispositivo de bucle (1 GB mínimo)[default=15GB], puede elegir otro valor, como «50GB» si sabe que va a crear muchos contenedores.
Buscar e iniciar una imagen de distribución de LXD
Para listar todas las imágenes de Ubuntu:
<lista de imágenes lxc ubuntu: arch=amd64
Habrá muchos resultados. Puede omitir arch=amd64 si necesita imágenes para otras plataformas, como procesadores ARM (los dispositivos Raspberry Pi utilizan esta arquitectura).
En la imagen anterior los resultados han sido limitados (con |cabeza) para facilitar la lectura. La huella dactilar de Ubuntu 18.04 (84a71299044b) ha sido resaltada. Si desea lanzar un contenedor con esa distribución, el comando sería:
lxc lanzar ubuntu:84a71299044b
Por el momento esto devolvería un permiso denegado error. Necesitas estar en el grupo «lxd». Tu usuario ya ha sido añadido a este grupo, pero para hacerlo activo tienes que salir y volver a entrar. Si quieres evitarlo, usa este comando, reemplazando «usuario» por tu nombre de usuario:
exec su - user
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
Ahora, los comandos lxc funcionan sin necesidad de sudo.
Lanzar Contenedores LXD con Distribuciones que no sean de Ubuntu
Este comando le mostrará qué otras distribuciones están disponibles:
<imágenes de la lista de imágenes lxc: arch=amd64
Para iniciar una imagen, en lugar de la huella dactilar, también puede utilizar un nombre de alias si ve uno disponible en esa lista.
lxc lanzar imágenes:debian/9
Si agrega una cadena al final, puede elegir un nombre para su contenedor:
lxc lanzar imágenes:debian/9 wordpress-site
Administrar contenedores LXD
Enumerar todos los contenedores:
lxc list
La columna «IPV4» es especialmente importante si tiene algún servicio en ejecución en esa instancia. Por ejemplo, si un servidor http Apache se está ejecutando en la instancia, al introducir «10.234.232.246» en el navegador se mostrará el sitio web alojado en el contenedor.
Para detener un contenedor:
lxc stop nombre_del_contenedor
Esto puede tardar mucho tiempo (o fallar) con distribuciones que no sean de Ubuntu. Es mejor llevar un cartucho al contenedor y, una vez dentro, entrar en systemctl poweroff para detenerlo.
Si todo lo demás falla, puede forzar una parada con:
lxc stop nombre_del_contenedor --force
Para arrancarlo:
lxc inicio nombre_del_contenedor
Para moverse dentro de su contenedor:
lxc shell name_of_container
Puede instalar programas con «sudo apt install» y hacer cualquier otra cosa que haría en una distribución Linux normal, por ejemplo, configurar un servidor Apache. Cuando quiera salir del contenedor, simplemente escriba:
exit
Transferir archivos desde/hacia contenedores LXD
Para subir un archivo a su contenedor:
Incluya el nombre del archivo a crear, no sólo el directorio donde desea subirlo. Aquí hay un ejemplo:
Para cargar un directorio en lugar de un archivo:
Ejemplo:
Para descargar un directorio de su contenedor a su sistema operativo principal:
Ejemplo:
Conclusión
Esto cubre el uso básico de los contactos LXD
ners. Hay características más avanzadas como instantáneas y retrocesos, imposición de límites a recursos como CPU y RAM, clonación de contenedores, etc. Estos pueden ser cubiertos en un futuro tutorial si notamos que los lectores están interesados en el tema.