Installéiert LXC (Linux Container) an RHEL, Rocky & AlmaLinux


LXD gëtt beschriwwen als den nächste Generatioun Container a virtuelle Maschinnmanager deen en immersive bitt fir Linux Systemer déi bannent Container lafen oder als virtuelle Maschinnen.

Et bitt Biller fir eng onendlech Unzuel vu Linux Verdeelungen mat Ënnerstëtzung fir eng breet Auswiel u Späicherbackends an Netzwierktypen. Et bitt och d'Optioun fir d'Biller op engem individuellen PC/Laptop a souguer op enger Cloudinstanz z'installéieren.

LXD erlaabt Iech Container a VMs mat dräi Weeër ze verwalten. Dir kënnt de lxc Client oder Kommandozeilinstrument, e REST API, oder souguer Drëtt Partei Integratiounen benotzen.

Notabele LXD Feature enthalen:

  • LXD ass Bildbaséiert mat Biller fir eng grouss Auswiel u Linux Verdeelungen.
  • Et ass mat Sécherheet als Haaptprioritéit gebaut.
  • Et bitt e REST API an lxc Kommandozeil Tool fir mat Container ze interagéieren.
  • Et bitt Ënnerstëtzung fir eng breet Palette vu Späicherbackends, Späichervolumen a Späicherpools.
  • Netzwierkmanagement ass duerch d'Schafe vu Brécknetzwierker a Cross-Host-Tunnelen.
  • Fortgeschratt Kontroll vu Ressourcen wéi CPU, RAM, Diskverbrauch, Block I/O a Kernel Ressourcen.
  • Flexibel a skalierbar - Dir kënnt Container op Ärem PC ofsetzen an e Cluster konfiguréieren deen Dausende vu Container op verschidden Noden aggregéiere kann.

Net ze verwiessele mam lxc Kommando-Linn Client Tool, dee vum LXD geliwwert gëtt, LXC (Linux Container) ass eng populär OS-Niveau Virtualiséierungstechnologie déi e mächtege API an aner Tools benotzt fir d'Benotzer z'erméiglechen, Container a virtuelle Maschinnen nahtlos ze kreéieren an ze verwalten an engem eenzege Host. Et enthält Templates, Tools Sprooch, a Bibliothéiksbindungen.

LXC benotzt déi folgend Kernel Feature fir Prozesser ze handhaben:

  • Kernel Nummraim: pid, mount, uts Netzwierk a Benotzer.
  • CGroups (Kontrollgruppen).
  • Chroots - Benotzt pivot_root.
  • Secomp Politik.
  • SELinux an Apparmor Profiler.

Linuxcontainers.org ass de Regenschirmprojet hannert LXD an LXC. Säin Zil ass eng Distro a Verkeeferneutral Plattform fir Linux Container Technologien ze bidden.

Mat där Aféierung aus dem Wee, wäerte mir elo demonstréieren wéi LXC Container op RHEL-baséiert Linux Verdeelunge wéi CentOS, Rocky Linux, an AlmaLinux erstellen a verwalten.

E funktionnéiert Linux Betribssystem mat minimaler Installatioun:

  • Installatioun vu RHEL Linux
  • Installatioun vu CentOS Linux
  • Installatioun vu Rocky Linux
  • Installatioun vun AlmaLinux

Schrëtt 1: Setzt SELinux op Permissive Modus

Direkt vun der Fliedermaus fänken mir un mat SELinux ze konfiguréieren an et op permissiv ze setzen. Awer ier mer dat maachen, loosst eis d'Systempakete aktualiséieren wéi follegt:

$ sudo dnf update

Fir SELinux op permissiv ze setzen, fuert de Kommando aus:

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

Fir dëst a Kraaft ze huelen, start Äre Server nei.

$ sudo reboot

A confirméiert de Status vun SELinux.

$ getenforce

Schrëtt 2: Installéiert EPEL Repository

EPEL ass e Repository vum Fedora Project deen eng Rei vu qualitativ héichwäerteg Packagen fir RedHat Enterprise Linux an aner RHEL-baséiert Verdeelungen ubitt.

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

Schrëtt 3: Füügt d'Kernel Parameteren derbäi

Ier mer LXD installéieren, sinn e puer zousätzlech Parameteren erfuerderlech. Dofir schalt op de Root Benotzer:

$ su -

A fügen d'Parameteren wéi folgend.

$ 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

Wann d'Parameteren op der Plaz sinn, da fuert weider an aktivéiert Snap.

Schrëtt 4: Installéieren an aktivéieren Snap

Deen einfachste Wee fir LXD op RHEL 8 z'installéieren ass et als Snap Package z'installéieren. Awer als éischt, loosst eis Snap installéieren wéi follegt.

$ sudo dnf install snapd

Dëst wäert snapd Daemon oder Service niewent anere Python Ofhängegkeeten installéieren wéi gewisen.

Mat Snap installéiert, fuert weider an aktivéiert den Haapt Snap Kommunikatioun Socket.

$ sudo systemctl enable --now snapd.socket

Zousätzlech aktivéiert klassesch Ënnerstëtzung andeems Dir e Symlink vun /var/lib/snapd/snap op /snap erstellt.

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

Fir d'Snapweeër ze aktualiséieren, start Äre System nei.

$ sudo reboot

Schrëtt 5: Installéiert LXD Containerization Manager

Et ginn zwou Weeër fir LXD aus engem Snap z'installéieren. Dir kënnt déi lescht Versioun vum LXD installéieren wéi gewisen.

$ sudo snap install —-classic lxd

Alternativ kënnt Dir déi lescht stabil LTS Versioun installéieren wéi follegt:

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

Fir lxc Kommandoen auszeféieren ouni op sudo Benotzer ze wiesselen, füügt de momentan ageloggte Benotzer un d'Lxd Grupp.

$ sudo usermod -aG lxd $USER

Vergewëssert Iech datt de Benotzer an d'lxd-Grupp bäigefüügt gouf andeems Dir all d'Gruppen opzielt, zu deem de Benotzer gehéiert.

$ groups tecmint

Als nächst, fuert den newgrp Kommando wéi follegt.

$ newgrp lxd

De Kommando ännert déi aktuell Grupp ID während enger Login Sessioun. Et setzt déi aktuell Grupp ID op déi genannte Grupp déi lxd ass.

Schrëtt 6: LXD Ëmfeld initialiséieren

Ier mir ufänken LXD Container ze kreéieren an ze managen, musse mir d'LXD Ëmfeld initialiséieren andeems Dir de Kommando ausféiert.

$ lxc init

Wat folgend ass eng Serie vu Ufroen déi Iech erlaben Äert Ëmfeld opzestellen. D'Defaults funktionnéieren just gutt, awer fillt Iech gratis Är eege Virléiften ze spezifizéieren.

Mir hunn e Späicherpool mam Numm tec-Pool erstallt mat der lvm Optioun als Backend.

Fir d'LXD Ëmfeld z'iwwerpréiwen, déi Dir just konfiguréiert hutt, ginn et eng Rei Kommandoen déi Dir benotze kënnt. Zum Beispill, fir de Standard LXD Profil ze weisen, fuert aus:

$ lxc profile show default

Fir d'Netzadapter an d'IPv4 an IPv6 Adressen ze weisen, lafen:

$ lxc network list

Dir kënnt et weider schmuel a méi fein Informatioun iwwer d'lxdbr0 Interface weisen wéi follegt.

$ lxc network show lxdbr0

Dir kënnt och de Stockage Pool z'iwwerpréiwen.

$ lxc storage list

Dir kënnt weider komplizéiert Detailer iwwer de Späicherpool kréien.

$ lxc storage show tec-pool

Fir lxc Container ze lëschten, fuert de Kommando aus:

$ lxc list

Am Moment hu mir nach keng Lafen Container. Also kritt Dir en eidelen Dësch mat nëmmen de Kolonnenetiketten.

Schrëtt 7: Oplëschtung Prebuilt LXC Container Biller

Just wéi Docker bitt d'LXC Plattform e Repository vu virgebaute Biller, aus deenen Dir Container erstellt. Fir all déi virgebaute Biller fir all Betribssystemer inklusiv virtuelle Maschinnen ze lëschten, fuert de Kommando:

$ lxc image list images: 

Dëst populéiert eng rieseg Lëscht vu Containerbiller a virtuelle Maschinnen fir all Betribssystemer. Fir eng spezifesch Linux Verdeelung ze schmuel, benotzt d'Syntax:

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

Zum Beispill, fir no verfügbare Biller fir Rocky Linux ze sichen, fuert de Kommando:

$ lxc image list images: grep -i rocky

Wann Dir no Debian Biller sicht, fuert de Kommando:

$ lxc image list images: grep -i debian

Schrëtt 8: LXC Container starten

Fir lxc Container ze starten, benotzt d'Syntax:

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

Hei lancéiere mir 2 Container: tec-container1 vun Debian 10 an tec-container2 vu Rocky Linux 8.

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

Fir d'Lxc Container ze lëschten, fuert de Kommando aus:

$ lxc list

D'Ausgab weist eng ganz Partie Informatioun iwwer d'Container. Dëst beinhalt den Numm vun de Container, de Staat - ob lafend oder gestoppt - IPv4 an IPv6 Adressen, Typ (egal ob e Container oder virtuell Maschinn), an eng Zuel vu Schnappschëss.

Fir nëmmen Lafen Container ze lëschten, fuert de Kommando aus:

$ lxc list | grep -i running

Ähnlech, fir gestoppt Container, ausféieren:

$ lxc list | grep -i stopped

Dir kënnt d'Informatioun a Metriken vun engem Container ënnersichen wéi Prozesser lafen, CPU & Gedächtnisverbrauch, a Bandbreedung fir e puer ze nennen mam Kommando:

$ lxc info tec-container1 

Schrëtt 9: Gitt Shell Zougang zu engem LXC Container

Dir kënnt Bash Zougang zu engem Container mat der Syntax kréien:

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

Fir Shell Zougang zu tec-container1 ze kréien, lafen mir de Kommando:

$ lxc exec tec-container1 bash

Wann Dir Shell Zougang kritt hutt, kënnt Dir mat dem Container als Root Benotzer interagéieren andeems Dir gemeinsame Shell Kommandoen ausféiert, inklusiv d'Aktualiséierung vum System wéi gewisen:

$ apt update

Fir aus dem Container erauszekommen, fuert de Kommando:

$ exit

Alternativ kënnt Dir d'Befehle direkt op de Container ausféieren ouni Zougang zu der Shell mat dem folgenden Format ze benotzen:

$ lxc exec container-name command

Zum Beispill kënnt Dir déi folgend Kommandoen ausféieren, déi d'Packagelëschten aktualiséieren, kontrolléiert d'Versioun vum OS, deen um Debian Container leeft a kontrolléiert den Datum.

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

Schrëtt 10: Pull/Push eng Datei(en) an en LXC Container

Eng aner Operatioun déi Dir maache kënnt ass Dateien an an aus dem Container ze transferéieren. Fir dëst ze demonstréieren, erstellen mir en neie Verzeechnes am LXD Container a navigéieren an et.

# mkdir data && cd data

Als nächst wäerte mir eng Probedatei erstellen an e puer Donnéeën derbäi. Fir dat ze maachen erstellen mir eng Probedatei mam vim Editor

# vim file1.txt

Als nächst wäerte mir e puer Beispilltext tippen an d'Datei späicheren.

Hello World, Welcome to LXD containers.

Fir d'Datei aus dem Container op de lokalen Hostsystem ze zéien, benotze mir d'Syntax:

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

An dësem Fall wäert de Kommando sinn:

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

Fir eng Datei aus dem lokalen Verzeichnis an de Container ze drécken oder ze kopéieren benotzt d'Syntax:

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

An dësem Fall hu mir eng Proufdatei am Heemverzeichnis mam Numm file2.txt kopéiert op den /root/data/ Wee am tec-container2 Container.

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

Fir d'Existenz vun der Datei am Container ze bestätegen, lafe mir:

$ lxc exec tec-container2 ls /root/data

Schrëtt 11: Stop/Start/Restart a LXC Container läschen

Mat der lxc Kommandozeil Utility kënnt Dir Containerverwaltungsaufgaben ausféieren wéi Stoppen, Starten, Neistarten a Container läschen.

Fir en lxc Container ze stoppen, benotzt d'Syntax:

$ lxc stop container-name

Zum Beispill, fir tec-container1 ze stoppen, lafen mir de Kommando:

$ lxc stop tec-container1

Fir den lxc Container ze starten, benotzt d'Syntax:

$ lxc start container-name

Zum Beispill, fir tec-Container1 ze starten, wäerte mir ausféieren:

$ lxc start tec-container1

Fir béid lxc Container nei ze starten, lafe mir de Kommando aus:

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

Fir en lxc Container ze läschen, musst Dir als éischt de Container stoppen an duerno läschen. Zum Beispill, fir ze läschen, lafen mir d'Befehle:

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

Alternativ kënnt Dir dës zwee Kommandoen kombinéieren wéi gewisen.

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

Schrëtt 12: Kritt Hëllef bei LXC Kommandozeiloptiounen

Fir Hëllef op aner Kommandooptioune vun LXC ze kréien, fuert einfach de Kommando aus:

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

Dat war en déif Tauchen an LXD Container a wéi Dir se mat der lxc Kommandozeil Utility Tool erstellen a verwalten. Mir vertrauen datt Dir dëse Guide hëllefräich fonnt hutt.