LXD se describe como el administrador de contenedores y máquinas virtuales de próxima generación que ofrece una inmersión para los sistemas Linux que se ejecutan dentro de contenedores o como máquinas virtuales.
Proporciona imágenes para una cantidad excesiva de distribuciones de Linux con soporte para una amplia selección de backends de almacenamiento y tipos de red. También brinda la opción de instalar las imágenes en una PC/portátil individual e incluso en una instancia en la nube.
LXD le permite administrar contenedores y máquinas virtuales de tres maneras. Puede aprovechar el cliente lxc o herramienta de línea de comandos, una API REST o incluso integraciones de terceros.
Funciones LXD
LXD notable las características incluyen:
- LXD está basado en imágenes con imágenes para una amplia selección de distribuciones de Linux.
- Está construido con la seguridad como máxima prioridad.
- Proporciona una API REST y una herramienta de línea de comandos lxc para interactuar con contenedores.
- Proporciona soporte para una amplia gama de backends de almacenamiento, volúmenes de almacenamiento y grupos de almacenamiento.
- La administración de la red se realiza a través de la creación de redes puente y túneles entre hosts.
- Control avanzado de recursos como CPU, RAM, uso de disco, bloque de E/S y recursos del kernel.
- Flexible y escalable:puede implementar contenedores en su PC y configurar un clúster que puede agregar miles de contenedores en varios nodos.
¿Qué es LXC?
No debe confundirse con el lxc Herramienta de cliente de línea de comandos proporcionada por LXD , LXC (Contenedor de Linux ) es una tecnología de virtualización a nivel de sistema operativo popular que utiliza una potente API y otras herramientas para permitir a los usuarios crear y administrar sin problemas contenedores y máquinas virtuales en un solo host. Comprende plantillas, lenguaje de herramientas y enlaces de biblioteca.
Características de LXC
LXC aprovecha las siguientes características del kernel para manejar procesos:
- Espacios de nombres del kernel:pid, mount, uts network y user.
- CGroups (grupos de control).
- Chroots:uso de pivot_root.
- Políticas de Seccomp.
- Perfiles SELinux y Apparmor.
Linuxcontainers.org es el proyecto paraguas detrás de ambos LXD y LXC . Su objetivo es ofrecer una plataforma independiente de distribuciones y proveedores para las tecnologías de contenedores de Linux.
Con esa introducción fuera del camino, ahora demostraremos cómo crear y administrar LXC contenedores en distribuciones de Linux basadas en RHEL como CentOS , Rocky Linux, y AlmaLinux .
Requisitos
Un sistema operativo Linux que funcione con una instalación mínima:
- Instalación de RHEL Linux
- Instalación de CentOS Linux
- Instalación de Rocky Linux
- Instalación de AlmaLinux
Paso 1:Establezca SELinux en modo permisivo
De inmediato, comenzaremos configurando SELinux y establecerlo en permisivo. Pero antes de hacerlo, actualicemos los paquetes del sistema de la siguiente manera:
$ sudo dnf update
Para configurar SELinux a permisivo, ejecute el comando:
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Para que esto surta efecto, reinicie su servidor.
$ sudo reboot
Y confirme el estado de SELinux .
$ getenforce
Paso 2:Instale el repositorio EPEL
EPEL es un repositorio del Proyecto Fedora que proporciona un conjunto de paquetes de alta calidad para RedHat Enterprise Linux y otras distribuciones basadas en RHEL.
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm OR $ sudo yum install epel-release
Paso 3:agregue los parámetros del kernel
Antes de instalar LXD , se requieren algunos parámetros adicionales. Por lo tanto, cambie a usuario root:
$ su -
Y agregue los parámetros de la siguiente manera.
$ grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)" $ grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)" $ echo "user.max_user_namespaces=3883" | sudo tee -a /etc/sysctl.d/99-userns.conf
Una vez que los parámetros estén en su lugar, continúe y habilite Snap.
Paso 4:Instalar y habilitar Snap
La forma más sencilla de instalar LXD en RHEL 8 es instalarlo como un snap paquete. Pero primero, instalemos snap de la siguiente manera.
$ sudo dnf install snapd
Esto instalará snapd daemon o servicio junto con otras dependencias de Python como se muestra.
Con el complemento instalado, proceda y habilite el complemento principal toma de comunicación.
$ sudo systemctl enable --now snapd.socket
Además, habilite el soporte clásico creando un enlace simbólico desde /var/lib/snapd/snap para /ajustar .
$ sudo ln -s /var/lib/snapd/snap /snap
Para actualizar el snap rutas, reinicie su sistema.
$ sudo reboot
Paso 5:Instale el administrador de contenedores LXD
Hay dos formas de instalar LXD de un snap . Puede instalar la última versión de LXD como se muestra.
$ sudo snap install —-classic lxd
Alternativamente, puede instalar el último LTS estable versión de la siguiente manera:
$ sudo snap install lxd --channel=4.0/stable
Para poder ejecutar lxc comandos sin cambiar a usuario sudo, agregue el usuario actualmente conectado a lxd grupo.
$ sudo usermod -aG lxd $USER
Verifique que el usuario se haya agregado a lxd grupo enumerando todos los grupos a los que pertenece el usuario.
$ groups tecmint
A continuación, ejecute newgrp comando de la siguiente manera.
$ newgrp lxd
El comando cambia el ID de grupo actual durante una sesión de inicio de sesión. Establece el ID de grupo actual en el grupo nombrado que es lxd .
Paso 6:inicialización del entorno LXD
Antes de comenzar a crear y administrar LXD contenedores, necesitamos inicializar el LXD entorno ejecutando el comando.
$ lxc init
Lo que sigue es una serie de indicaciones que le permitirán configurar su entorno. Los valores predeterminados funcionarán bien, pero siéntete libre de especificar tus propias preferencias.
Hemos creado un grupo de almacenamiento llamado tec-pool con el lvm opción como backend.
Para verificar el LXD entorno que acaba de configurar, hay una serie de comandos que puede utilizar. Por ejemplo, para mostrar el perfil LXD predeterminado, ejecute:
$ lxc profile show default
Para mostrar los adaptadores de red y el IPv4 y IPv6 direcciones, ejecute:
$ lxc network list
Puede reducirlo aún más y mostrar información más precisa sobre el lxdbr0 interfaz de la siguiente manera.
$ lxc network show lxdbr0
También puede verificar el grupo de almacenamiento.
$ lxc storage list
Puede obtener más detalles complejos sobre el grupo de almacenamiento.
$ lxc storage show tec-pool
Para listar en ejecución lxc contenedores, ejecute el comando:
$ lxc list
Por el momento, todavía no tenemos ningún contenedor en funcionamiento. Entonces obtendrá una tabla vacía con solo las etiquetas de las columnas.
Paso 7:enumeración de imágenes de contenedores LXC prediseñadas
Al igual que Docker , el LXC plataforma proporciona un repositorio de imágenes preconstruidas a partir de las cuales puede crear contenedores. Para enumerar todas las imágenes prediseñadas para todos los sistemas operativos, incluidas las máquinas virtuales, ejecute el comando:
$ lxc image list images:
Esto completa una enorme lista de imágenes de contenedores y máquinas virtuales para todos los sistemas operativos. Para limitarse a una distribución de Linux específica, utilice la sintaxis:
$ lxc image list images: grep -i os-type
Por ejemplo, para buscar imágenes disponibles para Rocky Linux , ejecute el comando:
$ lxc image list images: grep -i rocky
Si está buscando Debian imágenes, ejecute el comando:
$ lxc image list images: grep -i debian
Paso 8:lanzamiento de contenedores LXC
Para iniciar lxc contenedores, utilice la sintaxis:
$ lxc launch images:{distro}/{version}/{arch} {container-name-here}
Aquí lanzaremos 2 contenedores:tec-container1 de Debian 10 y tec-container2 de Rocky Linux 8 .
$ lxc launch images:debian/10/amd64 tec-container1 $ lxc launch images:rockylinux/8/amd64 tec-container2
Para enumerar el lxc contenedores, ejecute el comando:
$ lxc list
La salida muestra una gran cantidad de información sobre los contenedores. Esto incluye el nombre de los contenedores, el estado, ya sea en ejecución o detenido, las direcciones IPv4 e IPv6, el tipo (ya sea un contenedor o una máquina virtual) y una cantidad de instantáneas.
Para enumerar solo los contenedores en ejecución, ejecute el comando:
$ lxc list | grep -i running
Del mismo modo, para contenedores detenidos, ejecute:
$ lxc list | grep -i stopped
Puede sondear la información y las métricas de un contenedor, como los procesos en ejecución, la utilización de CPU y memoria, y el ancho de banda, por mencionar algunos, mediante el comando:
$ lxc info tec-container1
Paso 9:obtenga acceso Shell a un contenedor LXC
Puede obtener acceso bash a un contenedor utilizando la sintaxis:
$ lxc exec container-name name-of-the-shell
Para obtener acceso shell a tec-container1 , ejecutaremos el comando:
$ lxc exec tec-container1 bash
Una vez que haya obtenido acceso al shell, puede comenzar a interactuar con el contenedor como usuario raíz ejecutando los comandos comunes del shell, incluida la actualización del sistema, como se muestra:
$ apt update
Para salir del contenedor, ejecute el comando:
$ exit
Alternativamente, puede ejecutar los comandos directamente en el contenedor sin acceder al shell usando el siguiente formato:
$ lxc exec container-name command
Por ejemplo, puede ejecutar los siguientes comandos que actualizarán las listas de paquetes, comprobarán la versión del sistema operativo que se ejecuta en el contenedor Debian y comprobarán la fecha.
$ lxc exec tec-container1 apt update $ lxc exec tec-container1 cat /etc/debian_version $ lxc exec tec-container1 date
Paso 10:tirar/empujar un archivo(s) a un contenedor LXC
Otra operación que puede realizar es transferir archivos hacia y desde el contenedor. Para demostrar esto, crearemos un nuevo directorio en el LXD contenedor y navegue hacia él.
# mkdir data && cd data
A continuación, crearemos un archivo de muestra y agregaremos algunos datos. Para hacerlo, crearemos un archivo de muestra con vim redactor
# vim file1.txt
A continuación, escribiremos un texto de muestra y guardaremos el archivo.
Hello World, Welcome to LXD containers.
Para extraer el archivo del contenedor al sistema host local, usaremos la sintaxis:
$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}
En este caso, el comando será:
$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint
Para enviar o copiar un archivo desde el directorio local al contenedor, use la sintaxis:
$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/
En este caso, tenemos un archivo de muestra en el directorio de inicio llamado file2.txt siendo copiado a /root/data/ ruta en el tec-container2 contenedor.
$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Para confirmar la existencia del archivo en el contenedor ejecutaremos:
$ lxc exec tec-container2 ls /root/data
Paso 11:detener/iniciar/reiniciar y eliminar contenedores LXC
Con el lxc utilidad de línea de comandos, puede realizar tareas de administración de contenedores, como detener, iniciar, reiniciar y eliminar contenedores.
Para detener un lxc contenedor, use la sintaxis:
$ lxc stop container-name
Por ejemplo, para detener tec-container1 , ejecutaremos el comando:
$ lxc stop tec-container1
Para iniciar el lxc contenedor, use la sintaxis:
$ lxc start container-name
Por ejemplo, para iniciar tec-container1 , ejecutaremos:
$ lxc start tec-container1
Para reiniciar ambos lxc contenedores, ejecutaremos el comando:
$ lxc restart tec-container1 $ lxc restart tec-container2
Para eliminar un lxc contenedor, primero debe detener el contenedor y luego eliminarlo. Por ejemplo, para borrar ejecutaremos los comandos:
$ lxc stop tec-container1 $ lxc delete tec-container1
Alternativamente, puede combinar estos dos comandos como se muestra.
$ lxc stop tec-container1 && lxc delete tec-container1
Paso 12:Obtenga ayuda sobre las opciones de línea de comandos de LXC
Para obtener ayuda sobre otras opciones de comando proporcionadas por LXC , simplemente ejecute el comando:
$ lxc --help OR $ lxc command --help e.g $ lxc file --help
Conclusión
Esa fue una inmersión profunda en LXD contenedores y cómo puede crearlos y administrarlos usando el lxc herramienta de utilidad de línea de comandos. Confiamos en que esta guía le haya resultado útil.