lxd-imagen-personalizada-web

Crear una imagen LXD personalizada

¿Cómo crear una imagen LXC/LXD personalizada para luego crear nuestros contenedores a partir de ella? El proceso es mucho más sencillo de lo que podríamos imaginar...

LXD es un hypervisor de contenedores similar a Docker, de hecho ambos comparten orígenes, y su principal diferencia consiste en que un contenedor LXD se considera un contenedor de sistema, ya permite crear entornos más parecidos a los de una máquina virtual, pero sin la sobrecarga de ejecutar un kernel separado, mientras que Docker es usado para crear contenedores de aplicaciones.

Los contenedores LXD son ideales para entornos poco volátiles, que requieren más de un servicio en ejecución por contenedor, mientras que en Docker se recomienda una aplicación por contenedor y suelen ser más efímeros y cambiantes.

En este artículo veremos cómo crear una imagen LXD personalizada basada en Ubuntu 20.04, a partir de la cual poder crear luego nuestros contenedores.

Requisitos: Host con Ubuntu 20.04 y el snap de LXD instalado.

1. Instalar paquetes requeridos

Veamos cómo crear un entorno mínimo de Debian/Ubuntu en un directorio de nuestro host, para ello usaremos debootstrap, que instalaremos usando el siguiente comando: 

sudo apt install debootstrap

2. Crear la instalación base

Vamos a crear una instalación mínima de Ubuntu 20.04 (focal) en el directorio elegido, así que creamos un directorio y luego ejecutamos debootstrap con tres argumentos: el nombre de la distribución a instalar, la ruta destino y el repositorio de ls distribución (cuando es diferente a Debian):

mkdir -p /tmp/ubuntu-focal-lxd
sudo debootstrap focal /tmp/ubuntu-focal-lxd http://archive.ubuntu.com/ubuntu/

Veremos una salida como la siguiente mientras se construye el sistema base de Ubuntu 20.04.

Ingresamos al ambiente creado chroot para aplicar los cambios que deseamos en la imagen base, por ejemplo instalaremos node.js 14, para esto necesitamos antes el paquete curl para descargar y luego ejecutar el archivo nodesource_setup.sh, e instalaremos las librerias gcc, g++, y make, así:

apt -y install curl
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
bash nodesource_setup.sh
apt install nodejs
apt -y install gcc g++ make
rm nodesource_setup.sh
apt clean

Comprimimos el entorno chroot creado luego de aplicarle los cambios:

sudo tar -cvzf rootfs.tar.gz -C /tmp/ubuntu-focal-lxd .

Creamos un archivo llamado metadata.yml donde ingresamos los detalles de la imagen, incluyendo la fecha de creación en segundos, la que obtenemos con el comando date +%s 

architecture: «x86_64»
creation_date: 1616849590
properties:
architecture: «x86_64»
description: «Ubuntu 20.04 (focal) with preconfigured Node.js 14 (20210327)»
os: «ubuntu»
release: «focal»

y luego creamos un tar.gz con el mismo:

tar -cvzf metadata.tar.gz metadata.yaml

3. Crear la imagen

Finalmente creamos la imagen usado el archivo metadata y el entorno chroot comprimido:

lxc image import metadata.tar.gz rootfs.tar.gz –alias ubuntu-focal-nodejs

Para probar nuestra nueva imagen LXC/LXD con Ubuntu 20.04 y Node.js podemos iniciar un contenedor, e ingresar a este para verificar su contenido. En el siguiente paso crearemos un contenedor llamado ‘test’.

lxc launch ubuntu-focal-nodejs testnodejs

Podemos listar nuestros contenedores en ejecución con el comando lxc list:

Si deseamos, podemos además ingresar al contenedor y comprobar que tiene node.js instalado verificando su versión.

lxc exec testnodejs bash
node -v
v14.16.0

Ya está, tenemos una imagen LXC/LXD personalizada de Ubuntu 20.04 con nuestros cambios con la que crear nuestros contenedores.

COMPARTIR ESTE ARTICULO

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

21 lecciones que te acercarán al éxito

La vida esta llena de ciclos que terminan para que otros inicien, como cuando muere una semilla para que pueda nacer el arbol. Por eso, quiero compartir las 21 lecciones que aprendí en el camino, que me motivan a despertar temprano cada día y sin duda son parte del motor para lograr mis nuevas metas.

Read More »

Cómo potenciar tu Ventaja Competitiva

Tener entusiasmo por los productos o servicios que vendemos es esencial para cautivar a otros en un proceso de ventas, es esencial para el éxito. Pero demasiado entusiasmo nos puede llevar a hablar mas y escuchar menos, el principal error en un proceso de ventas. ¿Podemos vender más escuchando mejor a nuestro cliente?

Read More »

Planeación ABZ para alcanzar el Éxito

Un emprendedor suele recibir consejos contradictorios a la hora de empezar un nuevo proyecto, y lo peor es que estos pueden venir de personas inteligentes y experimentadas. Entonces, ¿Existe un método para planear un emprendimiento y garantizar el éxito o disminuir la probabilidad de falla?

Read More »

Acerca de Alfred

Emprendedor, Polymath, Coach y Consultor de negocios, con experiencia en negocios por todo el mundo. Alfred tiene la misión personal de desarrollar una cultura de liderazgo y emprendimiento, ayudando a otros a alcanzar su máximo potencial.

Alfred Certain 2019 © Todos los derechos reservados