Introducción a los contenedores LXD de Ubuntu

Introducción a los contenedores LXD de Ubuntu

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 trasladar a otros sistemas operativos. Y, en el caso de Linux, funcionan de la misma forma bajo cualquier distribución, sin necesidad de adaptaciones. Si necesita mover un contenedor de RedHat a Ubuntu, debería ser solo una simple operación de copia.

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. A continuación, puede crear un sitio web de WordPress en el interior. Ahora puede cambiar de nube a nube simplemente moviendo este contenedor LXD donde se necesita 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 la nube para crear una configuración redundante de alta disponibilidad.

LXD no virtualiza hardware como lo hacen QEMU o VirtualBox, lo que significa que es muy rápido y ofrece una velocidad de ejecución casi nativa.

Instalar y configurar LXD

Abra una terminal e instale LXD, además de las utilidades ZFS, que lo ayudarán a acelerar algunas operaciones y ahorrar espacio en disco cuando trabaje con contenedores.

sudo apt install zfsutils-linux lxd

lxd-apt-instalar

Inicie la configuración de LXD.

Pulse ENTER para seleccionar los valores predeterminados.

Para 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.

lxd-init-preguntas

Buscar y lanzar una imagen de distribución LXD

Para enumerar todas las imágenes de Ubuntu:

lxc image list ubuntu: arch=amd64

lxd-ubuntu-imágenes

Habrá muchos resultados. puedes omitir arch=amd64 si necesita imágenes para otras plataformas, como procesadores ARM (los dispositivos Raspberry Pi usan esa arquitectura).

En la imagen anterior los resultados han sido limitados (con |head) para que sea más fácil de leer. Se ha resaltado 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. Tienes que estar en el grupo «lxd». Su usuario ya se ha agregado a este grupo, pero para activarlo debe cerrar la sesión y volver a iniciarla. Si desea evitar eso, use este comando, reemplazando «usuario» con su nombre de usuario:

lxd-usuario-grupos activos

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:

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

lxd-lanzamiento-debian-9

Si agrega una cadena al final, puede elegir un nombre para su contenedor:

lxc launch images:debian/9 wordpress-site

Administrar contenedores LXD

Para enumerar todos los contenedores:

lxd-lxc-lista

La columna «IPV4» es especialmente importante si tiene algún servicio en ejecución en esa instancia. Por ejemplo, si un servidor http de Apache se ejecutaría en la instancia, al ingresar «10.234.232.246» en el navegador, se 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 las distribuciones que no son de Ubuntu. Es mejor meterle una concha al contenedor, y una vez dentro, entrar systemctl poweroff para detenerlo

Si todo lo demás falla, puede forzar una parada con:

lxc stop name_of_container --force

Para iniciarlo:

lxc start name_of_container

Para moverse dentro de su contenedor:

lxc shell name_of_container

lxd-shell-debian

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 a 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 desde 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, que imponen límites a los recursos como CPU y RAM, contenedores de clonación, etc. Estos pueden cubrirse en un tutorial futuro si notamos que los lectores están interesados ​​​​en el tema.

Experto Geek - Tu Guía en Tendencias Tecnológicas