Instal·leu LXC (Linux Containers) a RHEL, Rocky i AlmaLinux


LXD es descriu com el gestor de contenidors i màquines virtuals de nova generació que ofereix una immersió per als sistemes Linux que s'executen dins de contenidors o com a màquines virtuals.

Proporciona imatges per a un nombre excessiu de distribucions de Linux amb suport per a una àmplia selecció de backends d'emmagatzematge i tipus de xarxa. També ofereix l'opció d'instal·lar les imatges en un ordinador/ordinador portàtil individual i fins i tot en una instància al núvol.

LXD us permet gestionar contenidors i màquines virtuals de tres maneres. Podeu aprofitar el client lxc o l'eina de línia d'ordres, una API REST o fins i tot integracions de tercers.

Les característiques notables de LXD inclouen:

  • LXD es basa en imatges amb imatges per a una àmplia selecció de distribucions de Linux.
  • S'ha creat amb la seguretat com a prioritat màxima.
  • Proporciona una API REST i una eina de línia d'ordres lxc per interactuar amb els contenidors.
  • Ofereix suport per a una àmplia gamma de backends d'emmagatzematge, volums d'emmagatzematge i agrupacions d'emmagatzematge.
  • La gestió de la xarxa es fa mitjançant la creació de xarxes de pont i túnels entre hosts.
  • Control avançat de recursos com ara CPU, RAM, ús del disc, E/S de blocs i recursos del nucli.
  • Flexible i escalable: podeu implementar contenidors al vostre ordinador i configurar un clúster que pugui agregar milers de contenidors en diversos nodes.

No s'ha de confondre amb l'eina de client de línia d'ordres lxc proporcionada per LXD, LXC (Linux Container) és una tecnologia de virtualització popular a nivell de sistema operatiu que utilitza una potent API i altres eines per permetre als usuaris crear i gestionar de manera perfecta contenidors i màquines virtuals en un sol host. Comprèn plantilles, llenguatge d'eines i enllaços de biblioteca.

LXC aprofita les següents característiques del nucli per gestionar processos:

  • Espais de noms del nucli: pid, mount, uts network i user.
  • Grups (grups de control).
  • Chroots: utilitzant pivot_root.
  • Polítiques de Seccomp.
  • Perfils SELinux i Apparmor.

Linuxcontainers.org és el projecte paraigua darrere de LXD i LXC. El seu objectiu és oferir una plataforma de distribució i proveïdor neutral per a tecnologies de contenidors Linux.

Amb aquesta introducció fora del camí, ara demostrarem com crear i gestionar contenidors LXC en distribucions Linux basades en RHEL com CentOS, Rocky Linux i AlmaLinux.

Un sistema operatiu Linux que funciona amb una instal·lació mínima:

  • Instal·lació de RHEL Linux
  • Instal·lació de CentOS Linux
  • Instal·lació de Rocky Linux
  • Instal·lació d'AlmaLinux

Pas 1: configureu SELinux en mode permisiu

D'entrada, començarem configurant SELinux i establint-lo com a permissiu. Però abans de fer-ho, actualitzem els paquets del sistema de la següent manera:

$ sudo dnf update

Per establir SELinux com a permissiu, executeu l'ordre:

$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Perquè això tingui efecte, reinicieu el servidor.

$ sudo reboot

I confirmeu l'estat de SELinux.

$ getenforce

Pas 2: instal·leu el repositori EPEL

EPEL és un dipòsit del projecte Fedora que proporciona un conjunt de paquets d'alta qualitat per a RedHat Enterprise Linux i altres distribucions basades en RHEL.

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
$ sudo yum install epel-release

Pas 3: afegiu els paràmetres del nucli

Abans d'instal·lar LXD, calen alguns paràmetres addicionals. Per tant, canvieu a l'usuari root:

$ su -

I afegiu els paràmetres de la següent 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

Un cop establerts els paràmetres, procediu i activeu Snap.

Pas 4: instal·leu i activeu Snap

La manera més senzilla d'instal·lar LXD a RHEL 8 és instal·lar-lo com a paquet instantani. Però primer, instal·lem Snap de la següent manera.

$ sudo dnf install snapd

Això instal·larà el dimoni o el servei snapd juntament amb altres dependències de Python, tal com es mostra.

Amb Snap instal·lat, procediu i activeu el sòcol de comunicació principal Snap.

$ sudo systemctl enable --now snapd.socket

A més, activeu el suport clàssic creant un enllaç simbòlic des de /var/lib/snapd/snap a /snap.

$ sudo ln -s /var/lib/snapd/snap  /snap

Per actualitzar els camins d'ajustament, reinicieu el sistema.

$ sudo reboot

Pas 5: instal·leu LXD Containerization Manager

Hi ha dues maneres d'instal·lar LXD des d'un instant. Podeu instal·lar la darrera versió de LXD tal com es mostra.

$ sudo snap install —-classic lxd

Alternativament, podeu instal·lar la darrera versió estable de LTS de la següent manera:

$ sudo snap install lxd --channel=4.0/stable

Per poder executar ordres lxc sense canviar a l'usuari sudo, afegiu l'usuari connectat actualment al grup lxd.

$ sudo usermod -aG lxd $USER

Comproveu que l'usuari s'ha afegit al grup lxd enumerant tots els grups als quals pertany l'usuari.

$ groups tecmint

A continuació, executeu l'ordre newgrp de la següent manera.

$ newgrp lxd

L'ordre canvia l'ID del grup actual durant una sessió d'inici de sessió. Estableix l'identificador del grup actual al grup anomenat que és lxd.

Pas 6: Inicialització de l'entorn LXD

Abans de començar a crear i gestionar contenidors LXD, hem d'inicialitzar l'entorn LXD executant l'ordre.

$ lxc init

El que segueix és una sèrie d'indicacions que us permetran configurar el vostre entorn. Els valors predeterminats funcionaran bé, però no dubteu a especificar les vostres pròpies preferències.

Hem creat un grup d'emmagatzematge anomenat tec-pool amb l'opció lvm com a backend.

Per verificar l'entorn LXD que acabeu de configurar, hi ha una sèrie d'ordres que podeu utilitzar. Per exemple, per mostrar el perfil LXD predeterminat, executeu:

$ lxc profile show default

Per mostrar els adaptadors de xarxa i les adreces IPv4 i IPv6, executeu:

$ lxc network list

Podeu restringir-lo encara més i mostrar informació més fina sobre la interfície lxdbr0 de la següent manera.

$ lxc network show lxdbr0

També podeu verificar l'agrupació d'emmagatzematge.

$ lxc storage list

Podeu obtenir més detalls complexos sobre la piscina d'emmagatzematge.

$ lxc storage show tec-pool

Per llistar els contenidors lxc en execució, executeu l'ordre:

$ lxc list

De moment, encara no tenim cap contenidor en funcionament. Així, obtindreu una taula buida amb només les etiquetes de les columnes.

Pas 7: llista d'imatges de contenidors LXC preconstruïts

Igual que Docker, la plataforma LXC ofereix un dipòsit d'imatges preconstruïdes des del qual podeu crear contenidors. Per llistar totes les imatges preconstruïdes per a tots els sistemes operatius incloses les màquines virtuals, executeu l'ordre:

$ lxc image list images: 

Això omple una llista enorme d'imatges de contenidors i màquines virtuals per a tots els sistemes operatius. Per reduir a una distribució específica de Linux, utilitzeu la sintaxi:

$ lxc image list images: grep -i os-type

Per exemple, per cercar imatges disponibles per a Rocky Linux, executeu l'ordre:

$ lxc image list images: grep -i rocky

Si esteu cercant imatges de Debian, executeu l'ordre:

$ lxc image list images: grep -i debian

Pas 8: llançament de contenidors LXC

Per llançar contenidors lxc, utilitzeu la sintaxi:

$ lxc launch images:{distro}/{version}/{arch} {container-name-here}

Aquí, llançarem 2 contenidors: tec-container1 de Debian 10 i tec-container2 de Rocky Linux 8.

$ lxc launch images:debian/10/amd64 tec-container1
$ lxc launch images:rockylinux/8/amd64 tec-container2 

Per llistar els contenidors lxc, executeu l'ordre:

$ lxc list

La sortida mostra una gran quantitat d'informació sobre els contenidors. Això inclou el nom dels contenidors, l'estat, ja sigui en execució o aturat, adreces IPv4 i IPv6, tipus (ja sigui un contenidor o màquina virtual) i una sèrie d'instantànies.

Per llistar només els contenidors en execució, executeu l'ordre:

$ lxc list | grep -i running

De la mateixa manera, per als contenidors aturats, executeu:

$ lxc list | grep -i stopped

Podeu investigar la informació i mètriques d'un contenidor, com ara els processos en execució, la utilització de la CPU i la memòria i l'ample de banda per esmentar-ne alguns mitjançant l'ordre:

$ lxc info tec-container1 

Pas 9: obteniu accés a Shell a un contenidor LXC

Podeu obtenir accés bash a un contenidor mitjançant la sintaxi:

$ lxc exec container-name  name-of-the-shell

Per obtenir accés de shell a tec-container1, executarem l'ordre:

$ lxc exec tec-container1 bash

Un cop hàgiu obtingut l'accés a l'intèrpret d'ordres, podeu començar a interactuar amb el contenidor com a usuari root executant ordres comunes de l'intèrpret d'ordres, inclosa l'actualització del sistema tal com es mostra:

$ apt update

Per sortir del contenidor, executeu l'ordre:

$ exit

Alternativament, podeu executar les ordres directament al contenidor sense accedir al shell mitjançant el format següent:

$ lxc exec container-name command

Per exemple, podeu executar les ordres següents que actualitzaran les llistes de paquets, comprovarà la versió del sistema operatiu que s'executa al contenidor de Debian i comprovarà la data.

$ lxc exec tec-container1 apt update
$ lxc exec tec-container1 cat /etc/debian_version
$ lxc exec tec-container1 date

Pas 10: estireu/empènyer un fitxer (s) a un contenidor LXC

Una altra operació que podeu dur a terme és transferir fitxers cap i des del contenidor. Per demostrar-ho, crearem un nou directori al contenidor LXD i hi navegarem.

# mkdir data && cd data

A continuació, crearem un fitxer de mostra i afegirem algunes dades. Per fer-ho crearem un fitxer de mostra amb l'editor vim

# vim file1.txt

A continuació, escriurem una mica de text de mostra i guardarem el fitxer.

Hello World, Welcome to LXD containers.

Per treure el fitxer del contenidor al sistema amfitrió local, utilitzarem la sintaxi:

$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}

En aquest cas, l'ordre serà:

$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint

Per enviar o copiar un fitxer des del directori local al contenidor, utilitzeu la sintaxi:

$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/

En aquest cas, tenim un fitxer de mostra al directori inicial anomenat file2.txt que s'està copiant a la ruta /root/data/ del contenidor tec-container2.

$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/

Per confirmar l'existència del fitxer al contenidor, executarem:

$ lxc exec tec-container2 ls /root/data

Pas 11: Atureu/Inici/Reinicieu i suprimiu els contenidors LXC

Amb la utilitat de línia d'ordres lxc podeu realitzar tasques de gestió de contenidors com ara aturar, iniciar, reiniciar i suprimir contenidors.

Per aturar un contenidor lxc, utilitzeu la sintaxi:

$ lxc stop container-name

Per exemple, per aturar tec-container1, executarem l'ordre:

$ lxc stop tec-container1

Per iniciar el contenidor lxc, utilitzeu la sintaxi:

$ lxc start container-name

Per exemple, per iniciar tec-container1, executarem:

$ lxc start tec-container1

Per reiniciar els dos contenidors lxc, executarem l'ordre:

$ lxc restart tec-container1
$ lxc restart tec-container2

Per eliminar un contenidor lxc, primer heu d'aturar el contenidor i després suprimir-lo. Per exemple, per suprimir, executarem les ordres:

$ lxc stop tec-container1
$ lxc delete tec-container1

Alternativament, podeu combinar aquestes dues ordres tal com es mostra.

$ lxc stop tec-container1 && lxc delete tec-container1

Pas 12: obteniu ajuda sobre les opcions de línia d'ordres de LXC

Per obtenir ajuda sobre altres opcions d'ordres proporcionades per LXC, només cal que executeu l'ordre:

$ lxc --help
OR
$ lxc command --help e.g
$ lxc file --help

Va ser una immersió profunda als contenidors LXD i com podeu crear-los i gestionar-los mitjançant l'eina d'utilitat de línia d'ordres lxc. Confiem que aquesta guia us sigui útil.