LXD je popsán jako správce kontejnerů a virtuálních strojů nové generace, který nabízí pohlcující možnosti pro systémy Linux běžící uvnitř kontejnerů nebo jako virtuální stroje.
Poskytuje obrazy pro nepřeberné množství linuxových distribucí s podporou širokého výběru backendů úložiště a typů sítí. Poskytuje také možnost instalace obrazů na jednotlivé PC/laptopy a dokonce i na cloudovou instanci.
LXD umožňuje spravovat kontejnery a virtuální počítače třemi způsoby. Můžete využít lxc klienta nebo nástroj příkazového řádku, REST API nebo dokonce integrace třetích stran.
Funkce LXD
Pozoruhodné LXD funkce zahrnují:
- LXD je založen na obrázcích s obrázky pro široký výběr distribucí Linuxu.
- Je vytvořen s nejvyšší prioritou zabezpečení.
- Poskytuje REST API a nástroj příkazového řádku lxc pro interakci s kontejnery.
- Poskytuje podporu pro širokou škálu backendů úložiště, svazků úložiště a fondů úložiště.
- Správa sítě spočívá ve vytváření mostních sítí a tunelů mezi hostiteli.
- Pokročilé řízení zdrojů, jako je CPU, RAM, využití disku, blokové I/O a prostředky jádra.
- Flexibilní a škálovatelné – můžete na svém počítači nasadit kontejnery a nakonfigurovat cluster, který dokáže agregovat tisíce kontejnerů na různých uzlech.
Co je LXC?
Nezaměňujte s lxc klientský nástroj příkazového řádku poskytovaný LXD , LXC (Linuxový kontejner ) je populární virtualizační technologie na úrovni operačního systému, která využívá výkonné rozhraní API a další nástroje, které uživatelům umožňují bezproblémově vytvářet a spravovat kontejnery a virtuální stroje v jediném hostiteli. Zahrnuje šablony, jazyk nástrojů a vazby knihoven.
Funkce LXC
LXC využívá následující funkce jádra ke zpracování procesů:
- Jmenné prostory jádra:pid, mount, síť uts a uživatel.
- CGroups (kontrolní skupiny).
- Chroots – pomocí pivot_root.
- Zásady Seccomp.
- Profily SELinux a Apparmor.
Linuxcontainers.org je zastřešujícím projektem za oběma LXD a LXC . Jeho cílem je nabídnout distribuci a na dodavatele neutrální platformu pro technologie kontejnerů Linux.
S tímto úvodem z cesty si nyní ukážeme, jak vytvořit a spravovat LXC kontejnery na linuxových distribucích založených na RHEL, jako je CentOS , Rocky Linux a AlmaLinux .
Požadavky
Funkční operační systém Linux s minimální instalací:
- Instalace RHEL Linux
- Instalace CentOS Linux
- Instalace Rocky Linux
- Instalace AlmaLinux
Krok 1:Nastavte SELinux na Permisivní režim
Hned od začátku začneme konfigurací SELinux a nastavte jej na permisivní. Ale než tak učiníme, aktualizujme systémové balíčky následovně:
$ sudo dnf update
Chcete-li nastavit SELinux pro povolení spusťte příkaz:
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Aby se to projevilo, restartujte server.
$ sudo reboot
A potvrďte stav SELinux .
$ getenforce

Krok 2:Instalace úložiště EPEL
EPEL je úložiště z Projektu Fedora který poskytuje sadu vysoce kvalitních balíčků pro RedHat Enterprise Linux a další distribuce založené na RHEL.
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm OR $ sudo yum install epel-release

Krok 3:Přidejte parametry jádra
Než nainstalujeme LXD , jsou vyžadovány některé další parametry. Proto přepněte na uživatele root:
$ su -
A přidejte parametry následovně.
$ 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

Jakmile jsou parametry nastaveny, pokračujte a povolte Snap.
Krok 4:Nainstalujte a povolte Snap
Nejjednodušší způsob instalace LXD na RHEL 8 je nainstalovat jej jako snap balík. Nejprve však nainstalujme snap následovně.
$ sudo dnf install snapd
Tím se nainstaluje snapd démon nebo služba spolu s dalšími závislostmi Pythonu, jak je znázorněno.

S nainstalovaným snapem pokračujte a povolte hlavní snap komunikační zásuvka.
$ sudo systemctl enable --now snapd.socket
Kromě toho povolte klasickou podporu vytvořením symbolického odkazu z /var/lib/snapd/snap na /snap .
$ sudo ln -s /var/lib/snapd/snap /snap
Chcete-li aktualizovat snap cesty, restartujte systém.
$ sudo reboot
Krok 5:Nainstalujte LXD Containerization Manager
LXD lze nainstalovat dvěma způsoby z snímku . Můžete nainstalovat nejnovější verzi LXD jak je uvedeno.
$ sudo snap install —-classic lxd

Případně můžete nainstalovat nejnovější stabilní LTS verze takto:
$ sudo snap install lxd --channel=4.0/stable
Aby bylo možné spustit lxc příkazy bez přepnutí na uživatele sudo, přidejte aktuálně přihlášeného uživatele do lxd skupina.
$ sudo usermod -aG lxd $USER
Ověřte, zda byl uživatel přidán do lxd group výpisem všech skupin, do kterých uživatel patří.
$ groups tecmint

Dále spusťte newgrp příkaz takto.
$ newgrp lxd
Příkaz změní aktuální ID skupiny během relace přihlášení. Nastaví aktuální ID skupiny na pojmenovanou skupinu, která je lxd .
Krok 6:Inicializace prostředí LXD
Než začneme vytvářet a spravovat LXD kontejnery, musíme inicializovat LXD prostředí spuštěním příkazu.
$ lxc init
Následuje řada výzev, které vám umožní nastavit vaše prostředí. Výchozí nastavení bude fungovat dobře, ale můžete zadat své vlastní preference.
Vytvořili jsme úložiště s názvem tec-pool pomocí lvm možnost jako backend.

Chcete-li ověřit LXD V prostředí, které jste právě nakonfigurovali, existuje řada příkazů, které můžete použít. Chcete-li například zobrazit výchozí profil LXD, spusťte:
$ lxc profile show default

Zobrazení síťových adaptérů a IPv4 a IPv6 adresy, spusťte:
$ lxc network list

Můžete jej dále zúžit a zobrazit jemnější informace o lxdbr0 rozhraní následovně.
$ lxc network show lxdbr0

Můžete také ověřit fond úložiště.
$ lxc storage list

Můžete dále získat složité podrobnosti o fondu úložiště.
$ lxc storage show tec-pool

Chcete-li vypsat spuštěné lxc kontejnery, spusťte příkaz:
$ lxc list
V tuto chvíli ještě nemáme spuštěné žádné kontejnery. Získáte tedy prázdnou tabulku pouze s popisky sloupců.

Krok 7:Výpis předem vytvořených obrázků kontejneru LXC
Stejně jako Docker , LXC platforma poskytuje úložiště předem vytvořených obrazů, ze kterých můžete vytvářet kontejnery. Chcete-li zobrazit seznam všech předem sestavených bitových kopií pro všechny operační systémy včetně virtuálních počítačů, spusťte příkaz:
$ lxc image list images:
Tím se naplní obrovský seznam obrazů kontejnerů a virtuálních strojů pro všechny operační systémy. Chcete-li se zúžit na konkrétní distribuci Linuxu, použijte syntaxi:
$ lxc image list images: grep -i os-type
Chcete-li například vyhledat dostupné obrázky pro Rocky Linux , spusťte příkaz:
$ lxc image list images: grep -i rocky

Pokud hledáte Debian obrázky, spusťte příkaz:
$ lxc image list images: grep -i debian

Krok 8:Spuštění kontejnerů LXC
Chcete-li spustit lxc kontejnery, použijte syntaxi:
$ lxc launch images:{distro}/{version}/{arch} {container-name-here}
Zde spustíme 2 kontejnery:tec-container1 z Debianu 10 a tec-container2 z Rocky Linux 8 .
$ lxc launch images:debian/10/amd64 tec-container1 $ lxc launch images:rockylinux/8/amd64 tec-container2

Chcete-li uvést lxc kontejnery, spusťte příkaz:
$ lxc list
Výstup zobrazuje řadu informací o kontejnerech. To zahrnuje názvy kontejnerů, stav – ať už běžící nebo zastavený – adresy IPv4 a IPv6, typ (zda kontejner nebo virtuální počítač) a řadu snímků.

Chcete-li vypsat pouze spuštěné kontejnery, spusťte příkaz:
$ lxc list | grep -i running
Podobně pro zastavené kontejnery spusťte:
$ lxc list | grep -i stopped

Můžete zkoumat informace a metriky kontejneru, jako jsou běžící procesy, využití CPU a paměti a šířka pásma, abychom se zmínili o několika, pomocí příkazu:
$ lxc info tec-container1

Krok 9:Získejte Shell přístup ke kontejneru LXC
Přístup bash ke kontejneru můžete získat pomocí syntaxe:
$ lxc exec container-name name-of-the-shell
Chcete-li získat přístup k shellu tec-container1 , spustíme příkaz:
$ lxc exec tec-container1 bash
Jakmile získáte přístup k shellu, můžete začít pracovat s kontejnerem jako uživatel root spuštěním běžných příkazů shellu včetně aktualizace systému, jak je znázorněno:
$ apt update

Chcete-li opustit kontejner, spusťte příkaz:
$ exit
Případně můžete příkazy spouštět přímo v kontejneru bez přístupu k shellu v následujícím formátu:
$ lxc exec container-name command
Můžete například spustit následující příkazy, které aktualizují seznamy balíčků, zkontrolují verzi operačního systému běžícího na kontejneru Debianu a zkontrolují datum.
$ lxc exec tec-container1 apt update $ lxc exec tec-container1 cat /etc/debian_version $ lxc exec tec-container1 date

Krok 10:Vytáhněte/přesuňte soubor(y) do kontejneru LXC
Další operací, kterou můžete provést, je přenos souborů do az kontejneru. Abychom to demonstrovali, vytvoříme nový adresář v LXD kontejneru a přejděte do něj.
# mkdir data && cd data
Dále vytvoříme ukázkový soubor a přidáme nějaká data. K tomu vytvoříme ukázkový soubor s vim editor
# vim file1.txt
Dále napíšeme nějaký ukázkový text a soubor uložíme.
Hello World, Welcome to LXD containers.
Chcete-li stáhnout soubor z kontejneru do místního hostitelského systému, použijeme syntaxi:
$ lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}
V tomto případě bude příkaz:
$ lxc file pull tec-container2/root/data/file1.txt /home/tecmint

Chcete-li odeslat nebo zkopírovat soubor z místního adresáře do kontejneru, použijte syntaxi:
$ lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/
V tomto případě máme v domovském adresáři ukázkový soubor s názvem soubor2.txt kopírování do /root/data/ cestu v tec-container2 kontejner.
$ lxc file push /home/tecmint/file2.txt tec-container2/root/data/
Pro potvrzení existence souboru v kontejneru spustíme:
$ lxc exec tec-container2 ls /root/data

Krok 11:Zastavit / Spustit / Restartovat a smazat kontejnery LXC
Pomocí lxc pomocí nástroje příkazového řádku můžete provádět úlohy správy kontejnerů, jako je zastavování, spouštění, restartování a mazání kontejnerů.
Chcete-li zastavit lxc kontejner, použijte syntaxi:
$ lxc stop container-name
Chcete-li například zastavit tec-container1 , spustíme příkaz:
$ lxc stop tec-container1

Chcete-li spustit lxc kontejner, použijte syntaxi:
$ lxc start container-name
Chcete-li například spustit tec-container1 , provedeme:
$ lxc start tec-container1

Chcete-li restartovat obě lxc kontejnery, spustíme příkaz:
$ lxc restart tec-container1 $ lxc restart tec-container2

Chcete-li odstranit lxc kontejner, musíte kontejner nejprve zastavit a poté jej smazat. Například pro smazání spustíme příkazy:
$ lxc stop tec-container1 $ lxc delete tec-container1
Případně můžete tyto dva příkazy zkombinovat, jak je znázorněno.
$ lxc stop tec-container1 && lxc delete tec-container1

Krok 12:Získejte nápovědu k možnostem příkazového řádku LXC
Chcete-li získat nápovědu k dalším možnostem příkazů, které poskytuje LXC , jednoduše spusťte příkaz:
$ lxc --help OR $ lxc command --help e.g $ lxc file --help

Závěr
To byl hluboký ponor do LXD kontejnery a jak je můžete vytvářet a spravovat pomocí lxc nástroj příkazového řádku. Věříme, že vám tento průvodce pomohl.