Los contenedores son útiles por muchas razones. Aíslan las aplicaciones del resto del sistema. Son portátiles y fáciles de clonar y / o mover a otros sistemas operativos. Y, en el caso de Linux, funcionan de la misma manera bajo cualquier distribución, sin necesidad de adaptaciones. Si necesita mover un contenedor de RedHat a Ubuntu, debería ser solo una operación de copia simple.
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 activar un contenedor LXD, instalar un servidor de base de datos y un servidor http. Luego puede crear un sitio web de WordPress dentro. Ahora puede cambiar de una nube a otra con solo mover este contenedor LXD donde sea necesario cuando no esté satisfecho con su proveedor anterior. Y dado que es fácil clonar un contenedor, incluso puede cargar su sitio web en varios proveedores de nube para crear una configuración redundante y de alta disponibilidad.
LXD no virtualiza el hardware como lo hacen QEMU o VirtualBox, lo que significa que es muy rápido y ofrece una velocidad de ejecución casi nativa.
Contenidos
Instalar y configurar LXD
Abra una terminal e instale LXD, más las utilidades de ZFS, que lo ayudarán a acelerar algunas operaciones y ahorrar espacio en disco cuando trabaje con contenedores.
sudo apt install zfsutils-linux lxd
Inicie la configuración de LXD.
Presione ENTER para seleccionar los valores predeterminados.
por Size in GB of the new loop device (1GB minimum) [default=15GB]
, puede elegir otro valor, como “50 GB” si sabe que creará muchos contenedores.
Busque y ejecute una imagen de distribución LXD
Para enumerar todas las imágenes de Ubuntu:
lxc image list ubuntu: arch=amd64
Habrá muchos resultados. Puedes omitir arch=amd64
si necesita imágenes para otras plataformas, como procesadores ARM (los dispositivos Raspberry Pi utilizan dicha arquitectura).
En la imagen anterior los resultados han sido limitados (con |head
) para facilitar la lectura. Se resaltó la huella digital de Ubuntu 18.04 (84a71299044b). Si desea lanzar un contenedor con esa distribución, el comando sería:
lxc launch ubuntu:84a71299044b
Por el momento, esto devolvería un error de permiso denegado. Debe estar en el grupo “lxd”. Su usuario ya ha sido agregado a este grupo, pero para activarlo debe cerrar la sesión y volver a iniciarla. Si quiere evitar eso, use este comando, reemplazando “usuario” con su nombre de usuario:
Ahora, los comandos lxc funcionan sin requerir sudo.
Lanzar contenedores LXD con distribuciones que no sean de Ubuntu
Este comando le mostrará qué otras distribuciones están disponibles:
lxc image list images: arch=amd64
Para lanzar una imagen, en lugar de la huella digital, también puede usar un nombre de alias si ve uno disponible en esa lista.
lxc launch images:debian/9
Si agrega una cadena al final, puede elegir un nombre para su contenedor:
lxc launch images:debian/9 wordpress-site
Gestionar contenedores LXD
Para enumerar todos los contenedores:
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 ejecuta en la instancia, ingresar “10.234.232.246” en el navegador mostraría el sitio web alojado en el contenedor.
Para detener un contenedor:
lxc stop name_of_container
Esto puede llevar mucho tiempo (o fallar) con distribuciones que no son de Ubuntu. Es mejor llevar un caparazón al contenedor y una vez dentro, ingresar systemctl poweroff
para detenerlo.
Si todo lo demás falla, puede forzar una parada con:
lxc stop name_of_container --force
Para empezar:
lxc start name_of_container
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 normal de Linux, por ejemplo, configurar un servidor Apache. Cuando desee salir del contenedor, simplemente escriba:
Transferir archivos a / desde contenedores LXD
Para subir un archivo a su contenedor:
lxc file push /path/to/local/file name_of_container/path/to/uploaded/file
Incluya el nombre del archivo que se creará, no solo el directorio donde desea cargarlo. Aquí hay un ejemplo:
lxc file push lxd-apt-install.png accurate-colt/var/www/website/upload.png
Para cargar un directorio en lugar de un archivo:
lxc file push /path/to/local/directory name_of_container/path/to/remote/directory --recursive --verbose
Ejemplo:
lxc file push /bin accurate-colt/tmp --recursive --verbose
Para descargar un directorio de su contenedor a su sistema operativo principal:
lxc file pull name_of_container/path/to/remote/directory /path/to/local/directory --recursive --verbose
Ejemplo:
lxc file pull accurate-colt/tmp /tmp --recursive --verbose
Conclusión
Esto cubre el uso básico de contenedores LXD. Hay funciones más avanzadas como instantáneas y reversiones, imposición de límites a recursos como CPU y RAM, clonación de contenedores, etc. Estos pueden cubrirse en un tutorial futuro si notamos que los lectores están interesados en el tema.
¿Es útil este artículo?
¡Compártelo en redes sociales!