Installer LXC (Linux-beholdere) i RHEL, Rocky og AlmaLinux


LXD beskrives som neste generasjons container- og virtuell maskinbehandler som tilbyr en oppslukende for Linux-systemer som kjører inne i containere eller som virtuelle maskiner.

Den gir bilder for et overdrevent antall Linux-distribusjoner med støtte for et bredt utvalg av lagringsbackends og nettverkstyper. Det gir også muligheten til å installere bildene på en individuell PC/bærbar PC og til og med på en skyforekomst.

LXD lar deg administrere containere og VM-er på tre måter. Du kan dra nytte av lxc-klienten eller kommandolinjeverktøyet, et REST API eller til og med tredjepartsintegrasjoner.

LXD-funksjoner

Bemerkelsesverdige LXD-funksjoner inkluderer:

  • LXD er bildebasert med bilder for et bredt utvalg av Linux-distribusjoner.
  • Den er bygget med sikkerhet som en topp prioritet.
  • Det gir et REST API og lxc kommandolinjeverktøy for å samhandle med containere.
  • Den gir støtte for et bredt spekter av lagringsbackends, lagringsvolumer og lagringsbassenger.
  • Nettverksstyring er gjennom opprettelse av bronettverk og kryssvertstunneler.
  • Avansert kontroll over ressurser som CPU, RAM, diskbruk, blokk I/U og kjerneressurser.
  • Fleksibel og skalerbar – Du kan distribuere containere på PC-en din og konfigurere en klynge som kan samle tusenvis av containere på forskjellige noder.

Hva er LXC?

For ikke å forveksle med kommandolinjeklientverktøyet lxc levert av LXD, LXC (Linux Container) er en populær virtualiseringsteknologi på OS-nivå som bruker et kraftig API og andre verktøy for å gjøre det mulig for brukere å sømløst lage og administrere containere og virtuelle maskiner i én enkelt vert. Den består av maler, verktøyspråk og bibliotekbindinger.

LXC-funksjoner

LXC utnytter følgende kjernefunksjoner for å håndtere prosesser:

  • Kjernenavnerom: pid, mount, uts-nettverk og bruker.
  • CGrupper (kontrollgrupper).
  • Chroots – Bruker pivot_root.
  • Secomp retningslinjer.
  • SELinux- og Apparmor-profiler.

Linuxcontainers.org er paraplyprosjektet bak både LXD og LXC. Målet er å tilby en distro- og leverandørnøytral plattform for Linux-beholderteknologier.

Med den introduksjonen ute av veien, vil vi nå demonstrere hvordan du oppretter og administrerer LXC-beholdere på RHEL-baserte Linux-distribusjoner som CentOS, Rocky Linux,< og AlmaLinux.

Krav

Et fungerende Linux-operativsystem med minimal installasjon:

  • Installasjon av RHEL Linux
  • Installasjon av CentOS Linux
  • Installasjon av Rocky Linux
  • Installasjon av AlmaLinux

Trinn 1: Sett SELinux til Permissive Mode

Med en gang starter vi med å konfigurere SELinux og sette den til permissive. Men før vi gjør det, la oss oppdatere systempakkene som følger:

sudo dnf update

For å sette SELinux til permissive, kjør kommandoen:

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

For at dette skal tre i kraft, start serveren på nytt.

sudo reboot

Og bekreft statusen til SELinux.

getenforce

Trinn 2: Installer EPEL Repository

EPEL er et depot fra Fedora-prosjektet som gir et sett med høykvalitetspakker for RedHat Enterprise Linux og andre RHEL-baserte distribusjoner.

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

Trinn 3: Legg til kjerneparametrene

Før vi installerer LXD, kreves det noen ekstra parametere. Bytt derfor til root-bruker:

su -

Og legg til parameterne som følger.

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

Når parametrene er på plass, fortsett og aktiver Snap.

Trinn 4: Installer og aktiver Snap

Den enkleste måten å installere LXDRHEL 8 er å installere den som en snap-pakke. Men først, la oss installere snap som følger.

sudo dnf install snapd

Dette vil installere snapd-demonen eller tjenesten sammen med andre Python-avhengigheter som vist.

Med snap installert, fortsett og aktiver hovedsnap-kommunikasjonskontakten.

sudo systemctl enable --now snapd.socket

Aktiver i tillegg klassisk støtte ved å lage en symbolkobling fra /var/lib/snapd/snap til /snap.

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

For å oppdatere snap-banene, start systemet på nytt.

sudo reboot

Trinn 5: Installer LXD Containerization Manager

Det er to måter å installere LXD på fra en snap. Du kan installere den nyeste versjonen av LXD som vist.

sudo snap install —-classic lxd

Alternativt kan du installere den siste stabile LTS-versjonen som følger:

sudo snap install lxd --channel=4.0/stable

For å kunne utføre lxc-kommandoer uten å bytte til sudo-bruker, legg til den påloggede brukeren i lxd-gruppen.

sudo usermod -aG lxd $USER

Bekreft at brukeren er lagt til lxd-gruppen ved å liste opp alle gruppene brukeren tilhører.

groups tecmint

Deretter kjører du kommandoen newgrp som følger.

newgrp lxd

Kommandoen endrer gjeldende gruppe-ID under en påloggingsøkt. Den setter gjeldende gruppe-ID til den navngitte gruppen som er lxd.

Trinn 6: Initialisering av LXD-miljø

Før vi begynner å lage og administrere LXD-beholdere, må vi initialisere LXD-miljøet ved å kjøre kommandoen.

lxc init

Det som følger er en serie med meldinger som lar deg sette opp miljøet ditt. Standardinnstillingene vil fungere helt fint, men spesifiser gjerne dine egne preferanser.

Vi har opprettet en lagringspool kalt tec-pool med lvm-alternativet som backend.

For å bekrefte LXD-miljøet du nettopp har konfigurert, er det en rekke kommandoer du kan bruke. For å vise standard LXD-profil, kjør for eksempel:

lxc profile show default

For å vise nettverkskortene og IPv4- og IPv6-adressene, kjør:

lxc network list

Du kan begrense det ytterligere og vise finere informasjon om lxdbr0-grensesnittet som følger.

lxc network show lxdbr0

Du kan også verifisere lagringsbassenget.

lxc storage list

Du kan ytterligere få intrikate detaljer om lagringsbassenget.

lxc storage show tec-pool

For å liste kjørende lxc-beholdere, kjør kommandoen:

lxc list

For øyeblikket har vi ingen kjørende containere ennå. Så du vil få en tom tabell med kun kolonneetikettene.

Trinn 7: Oppføring av forhåndsbygde LXC-beholderbilder

Akkurat som Docker, gir LXC-plattformen et oppbevaringssted med forhåndsbygde bilder som du kan lage beholdere fra. For å liste opp alle forhåndsbygde bilder for alle operativsystemer inkludert virtuelle maskiner, kjør kommandoen:

lxc image list images: 

Dette fyller ut en enorm liste over containerbilder og virtuelle maskiner for alle operativsystemene. For å begrense til en spesifikk Linux-distribusjon, bruk syntaksen:

lxc image list images: grep -i os-type

For for eksempel å søke etter tilgjengelige bilder for Rocky Linux, kjør kommandoen:

lxc image list images: grep -i rocky

Hvis du søker etter Debian-bilder, kjør kommandoen:

lxc image list images: grep -i debian

Trinn 8: Lansering av LXC-beholdere

For å starte lxc-beholdere, bruk syntaksen:

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

Her vil vi lansere 2 containere: tec-container1 fra Debian 10 og tec-container2 fra Rocky Linux 8 .

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

For å liste lxc-beholderne, kjør kommandoen:

lxc list

Utdataene viser en rekke informasjon om beholderne. Dette inkluderer navnet på beholderne, tilstanden – enten den kjører eller stoppet – IPv4- og IPv6-adresser, type (enten en beholder eller virtuell maskin), og en rekke øyeblikksbilder.

For å vise kun kjørende beholdere, kjør kommandoen:

lxc list | grep -i running

På samme måte, for stoppede beholdere, utfør:

lxc list | grep -i stopped

Du kan søke etter en beholders informasjon og beregninger som kjørende prosesser, CPU og minneutnyttelse og båndbredde for å nevne noen ved å bruke kommandoen:

lxc info tec-container1 

Trinn 9: Få Shell-tilgang til en LXC-beholder

Du kan få bash-tilgang til en beholder ved å bruke syntaksen:

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

For å få skalltilgang til tec-container1, kjører vi kommandoen:

lxc exec tec-container1 bash

Når du har fått shell-tilgang, kan du begynne å samhandle med containeren som root-bruker ved å kjøre vanlige shell-kommandoer, inkludert oppdatering av systemet som vist:

apt update

For å gå ut av beholderen, kjør kommandoen:

exit

Alternativt kan du utføre kommandoene direkte på beholderen uten å få tilgang til skallet ved å bruke følgende format:

lxc exec container-name command

For eksempel kan du kjøre følgende kommandoer som vil oppdatere pakkelistene, sjekke versjonen av OS som kjører på Debian-beholderen og sjekke datoen.

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

Trinn 10: Trekk/skyv en fil(er) til en LXC-beholder

En annen operasjon du kan utføre er å overføre filer til og fra beholderen. For å demonstrere dette vil vi opprette en ny katalog i LXD-beholderen og navigere inn i den.

mkdir data && cd data

Deretter vil vi lage en eksempelfil og legge til noen data. For å gjøre det vil vi lage en eksempelfil med vim-editor

vim file1.txt

Deretter skriver vi inn litt eksempeltekst og lagrer filen.

Hello World, Welcome to LXD containers.

For å trekke filen fra beholderen til det lokale vertssystemet, bruker vi syntaksen:

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

I dette tilfellet vil kommandoen være:

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

For å skyve eller kopiere en fil fra den lokale katalogen til beholderen, bruk syntaksen:

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

I dette tilfellet har vi en eksempelfil i hjemmekatalogen kalt fil2.txt som kopieres til /root/data/ banen i tec-container2< beholder.

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

For å bekrefte eksistensen av filen i beholderen, kjører vi:

lxc exec tec-container2 ls /root/data

Trinn 11: Stopp/Start/Start på nytt og slett LXC-beholdere

Med kommandolinjeverktøyet lxc kan du utføre beholderadministrasjonsoppgaver som å stoppe, starte, starte på nytt og slette beholdere.

For å stoppe en lxc-beholder, bruk syntaksen:

lxc stop container-name

For å stoppe tec-container1, kjører vi for eksempel kommandoen:

lxc stop tec-container1

For å starte lxc-beholderen, bruk syntaksen:

lxc start container-name

For å starte tec-container1, vil vi for eksempel utføre:

lxc start tec-container1

For å starte begge lxc-beholderne på nytt, kjører vi kommandoen:

lxc restart tec-container1
lxc restart tec-container2

For å slette en lxc-beholder, må du først stoppe beholderen og deretter slette den. For eksempel, for å slette, kjører vi kommandoene:

lxc stop tec-container1
lxc delete tec-container1

Alternativt kan du kombinere disse to kommandoene som vist.

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

Trinn 12: Få hjelp med LXC kommandolinjealternativer

For å få hjelp til andre kommandoalternativer fra LXC, kjør bare kommandoen:

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

Konklusjon

Det var et dypdykk i LXD-beholdere og hvordan du kan opprette og administrere dem ved å bruke lxc-kommandolinjeverktøyet. Vi stoler på at du synes denne veiledningen var nyttig.