Contenedores LXD, instalación e introducción en Ubuntu

about contenedores lxd

En el siguiente artículo vamos a echar un vistazo a los contenedores LXD. Sobre ellos ya habló en este blog un compañero hace algún tiempo. En aquel artículo ya dejaba claro que estos contenedores son útiles por diferentes razones. Aíslan aplicaciones del resto del sistema, son portátiles, fáciles de clonar y/o mover a otros sistemas operativos. En el caso de Gnu/Linux, funcionan de la misma manera en cualquier distribución, sin necesidad de adaptaciones.

Docker es una solución popular diseñada para contener una sola aplicación como podría ser un servidor de base de datos MySQL. LXD es similar en algunos aspectos, pero está diseñado para contener un sistema operativo completo. LXD no va a virtualizar hardware como QEMU o VirtualBox. Esto significa que es muy rápido y ofrece una velocidad de ejecución casi nativa.

Como ejemplo de uso, podríamos crear un contenedor LXD, instalar un servidor de base de datos y un servidor http. Ahí vamos a tener la posibilidad de crear un sitio web con WordPress y llegado el caso podemos cambiar de nube a nube simplemente moviendo este contenedor LXD donde sea necesario. Como resulta sencillo clonar un contenedor, incluso se podría cargar tu sitio web a múltiples proveedores de la nube para crear una configuración redundante y de alta disponibilidad.

Instalar y configurar LXD

Para instalar LXD solo hay que abrir una terminal (Ctrl+Alt+T) e instalar. Además también podemos instalar las utilidades ZFS. Estas nos ayudarán a acelerar algunas operaciones y ahorrar espacio en el disco cuando trabajemos con contenedores.

Instalar contenedores LXD

sudo apt install zfsutils-linux lxd

Para iniciar la configuración de LXD, en la misma terminal escribimos:

configurar contenedores LXD

sudo lxd init

Aquí podemos pulsar Intro para seleccionar los valores predeterminados.

Busca e inicia una imagen de distribución LXD

Para ver un listado de las imágenes de Ubuntu, en la terminal escribimos:

Imágenes disponibles LXD

lxc image list ubuntu: arch=amd64|head

Se puede omitir arch=amd64 si necesitas imágenes para otras arquitecturas. En la imagen anterior, los resultados se han limitado (con | head) para que sea más fácil de leer.

Como se pudo ver en la captura anterior, la huella digital de Ubuntu 18.04 (dcbc8e3e5c2e) la dejé resaltada. Si te interesa iniciar un contenedor con esa distribución habría que utilizar esa huella. El comando a ejecutar sería:

lanzando contenedor LXD Ubuntu

lxc launch ubuntu:dcbc8e3e5c2e

Gestionar contenedores LXD

Para listar todos los contenedores creados, solo hay que escribir:

contenedores lxd funcionando

lxc list

La columna ‘IPV4‘ es especialmente importante si tiene algún servicio en ejecución en esa instancia. Por ejemplo, si se estuviera ejecutando un servidor http Apache, al escribir la IP “10.191.112.88” en el navegador se mostraría el sitio web alojado en el contenedor.

Para detener un contenedor, solo hay que escribir:

lxc stop nombre-contenedor

Esto puede llevar mucho tiempo, o fallar con distribuciones que no sean de Ubuntu. Si esto ocurre, siempre puedes utilizar systemctl poweroff para detenerlo.

Si todo lo demás falla, puedes forzar la parada con:

lxc stop nombre-contenedor --force

Para empezar con un contenedor habría que escribir:

lxc start nombre-contenedor

Si quieres moverte dentro del contenedor, ejecuta:

lxc shell nombre-contenedor

Dentro del contenedor se puede instalar programas con ‘sudo apt install‘ y hacer cualquier otra cosa que harías en una distribución de Gnu/Linux normal, por ejemplo, configurar un servidor Apache.

Datos de un contenedor LXD

Cuando quieras salir del contenedor, simplemente escribe:

exit

Transferir archivos a/desde Contenedores LXD

Para cargar un archivo a tu contenedor, utiliza la siguiente sintaxis:

copiar archivo a contenedor LXD

lxc file push /ruta/al/archivo/local/nombre-archivo nombre-contenedor/ruta/al/archivo/subido/nombre-archivo

Incluye el nombre del archivo que se creará, no solo el directorio donde quieres dejarlo.

Para cargar un directorio en lugar de un archivo:

copiar directorio a contenedor LXD

lxc file push /ruta/al/directorio nombre-contenedor/ruta/al/directorio/remoto --recursive --verbose

Para descargar un directorio desde el contenedor a tu sistema operativo principal:

lxc file pull nombre-contenedor/ruta/al/directorio/remoto ruta/al/directorio --recursive --verbose

Esto cubre el uso básico de los contenedores LXD. Hay funciones más avanzadas, como instantáneas, límites a los recursos como CPU y RAM, contenedores de clonación, etc. Todo esto y más se puede consultar en la documentación oficial, en la página web del proyecto o en su página de GitHub.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.