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 LXD på RHEL 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.