Instalirajte LXC (Linux Containers) u RHEL, Rocky & AlmaLinux


LXD je opisan kao sljedeća generacija upravitelja kontejnera i virtuelnih mašina koji nudi imerzivno za Linux sisteme koji rade unutar kontejnera ili kao virtuelne mašine.

Pruža slike za ogroman broj Linux distribucija s podrškom za širok izbor pozadinskih sustava za pohranu i tipova mreže. Takođe pruža mogućnost instaliranja slika na pojedinačni PC/laptop, pa čak i na instancu u oblaku.

LXD vam omogućava da upravljate kontejnerima i VM-ovima na tri načina. Možete iskoristiti lxc klijent ili alat komandne linije, REST API ili čak integracije treće strane.

LXD karakteristike

Značajne LXD karakteristike uključuju:

  • LXD je baziran na slikama sa slikama za širok izbor Linux distribucija.
  • Izgrađen je sa sigurnošću kao glavnim prioritetom.
  • Pruža REST API i lxc alat komandne linije za interakciju sa kontejnerima.
  • Pruža podršku za širok raspon pozadina za pohranu, volumena pohrane i spremišta za pohranu.
  • Upravljanje mrežom je kroz stvaranje bridge mreža i cross-host tunela.
  • Napredna kontrola resursa kao što su CPU, RAM, upotreba diska, blok I/O i resursi kernela.
  • Fleksibilan i skalabilan – Možete postaviti kontejnere na svoj PC i konfigurirati klaster koji može agregirati hiljade kontejnera na različitim čvorovima.

Šta je LXC?

Ne treba se brkati sa lxc klijentskim alatom komandne linije koji pruža LXD, LXC (Linux kontejner) je popularna tehnologija virtuelizacije na nivou OS-a koja koristi moćan API i druge alate kako bi omogućila korisnicima da besprekorno kreiraju i upravljaju kontejnerima i virtuelnim mašinama u jednom hostu. Sastoji se od šablona, jezika alata i povezivanja biblioteke.

LXC karakteristike

LXC koristi sljedeće karakteristike kernela za rukovanje procesima:

  • Imenski prostori kernela: pid, mount, uts mreža i korisnik.
  • CG grupe (kontrolne grupe).
  • Chroots – Korištenje pivot_root.
  • Seccomp policy.
  • SELinux i Apparmor profili.

Linuxcontainers.org je krovni projekat iza i LXD i LXC. Njegov cilj je ponuditi distro platformu i platformu neutralnu za dobavljače za Linux kontejnerske tehnologije.

Sa ovim uvodom na putu, sada ćemo pokazati kako kreirati i upravljati LXC kontejnerima na RHEL baziranim Linux distribucijama kao što su CentOS, Rocky Linux,< i AlmaLinux.

Zahtjevi

Radni Linux operativni sistem sa minimalnom instalacijom:

  • Instalacija RHEL Linuxa
  • Instalacija CentOS Linuxa
  • Instalacija Rocky Linuxa
  • Instalacija AlmaLinux-a

Korak 1: Postavite SELinux na Permissive Mode

Odmah ćemo početi tako što ćemo konfigurirati SELinux i postaviti ga na dopušteno. Ali prije nego što to učinimo, ažurirajmo sistemske pakete na sljedeći način:

sudo dnf update

Da postavite SELinux na dopušteno, izvršite naredbu:

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

Da bi ovo stupilo na snagu, ponovo pokrenite server.

sudo reboot

I potvrdite status SELinuxa.

getenforce

Korak 2: Instalirajte EPEL Repository

EPEL je spremište iz Fedora projekta koje pruža skup paketa visokog kvaliteta za RedHat Enterprise Linux i druge distribucije zasnovane na RHEL-u.

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

Korak 3: Dodajte parametre kernela

Prije nego što instaliramo LXD, potrebni su neki dodatni parametri. Stoga se prebacite na root korisnika:

su -

I dodajte parametre na sljedeći način.

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

Kada su parametri postavljeni, nastavite i omogućite Snap.

Korak 4: Instalirajte i omogućite Snap

Najjednostavniji način da instalirate LXD na RHEL 8 je da ga instalirate kao snap paket. Ali prvo, hajde da instaliramo snap na sljedeći način.

sudo dnf install snapd

Ovo će instalirati snapd demon ili uslugu uz druge Python zavisnosti kao što je prikazano.

Sa instaliranim snap, nastavite i omogućite glavnu snap komunikacijsku utičnicu.

sudo systemctl enable --now snapd.socket

Osim toga, omogućite klasičnu podršku kreiranjem simbolične veze od /var/lib/snapd/snap do /snap.

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

Da ažurirate snap putanje, ponovo pokrenite sistem.

sudo reboot

Korak 5: Instalirajte LXD Containerization Manager

Postoje dva načina za instalaciju LXD iz snimka. Možete instalirati najnoviju verziju LXD kao što je prikazano.

sudo snap install —-classic lxd

Alternativno, možete instalirati najnoviju stabilnu LTS verziju na sljedeći način:

sudo snap install lxd --channel=4.0/stable

Da biste mogli izvršiti naredbe lxc bez prelaska na sudo korisnika, dodajte trenutno prijavljenog korisnika u grupu lxd.

sudo usermod -aG lxd $USER

Provjerite da li je korisnik dodan u grupu lxd tako što ćete navesti sve grupe kojima korisnik pripada.

groups tecmint

Zatim pokrenite naredbu newgrp na sljedeći način.

newgrp lxd

Komanda mijenja ID trenutne grupe tokom sesije prijave. Postavlja trenutni ID grupe na imenovanu grupu koja je lxd.

Korak 6: Inicijalizacija LXD okruženja

Prije nego počnemo kreirati LXD kontejnere i upravljati njima, moramo inicijalizirati LXD okruženje pokretanjem naredbe.

lxc init

Ono što slijedi je niz upita koji će vam omogućiti da postavite svoje okruženje. Zadane postavke će raditi sasvim dobro, ali slobodno navedite svoje željene postavke.

Napravili smo spremište pod nazivom tec-pool sa opcijom lvm kao pozadinom.

Da biste provjerili LXD okruženje koje ste upravo konfigurirali, postoji niz naredbi koje možete koristiti. Na primjer, za prikaz zadanog LXD profila izvršite:

lxc profile show default

Za prikaz mrežnih adaptera i IPv4 i IPv6 adresa, pokrenite:

lxc network list

Možete ga dodatno suziti i prikazati finije informacije o interfejsu lxdbr0 na sljedeći način.

lxc network show lxdbr0

Također možete provjeriti spremište za pohranu.

lxc storage list

Dodatno možete dobiti složene detalje o skladištu.

lxc storage show tec-pool

Za popis pokrenutih lxc kontejnera, pokrenite naredbu:

lxc list

Trenutno još nemamo pokrenute kontejnere. Tako ćete dobiti praznu tabelu sa samo oznakama kolona.

Korak 7: Navođenje unapred izgrađenih slika LXC kontejnera

Baš kao i Docker, LXC platforma pruža spremište unaprijed napravljenih slika iz kojih možete kreirati kontejnere. Da biste izlistali sve unapred izgrađene slike za sve operativne sisteme uključujući virtuelne mašine, pokrenite naredbu:

lxc image list images: 

Ovo popunjava ogromnu listu slika kontejnera i virtuelnih mašina za sve operativne sisteme. Da biste suzili na određenu distribuciju Linuxa, koristite sintaksu:

lxc image list images: grep -i os-type

Na primjer, da potražite dostupne slike za Rocky Linux, pokrenite naredbu:

lxc image list images: grep -i rocky

Ako tražite Debian slike, pokrenite naredbu:

lxc image list images: grep -i debian

Korak 8: Pokretanje LXC kontejnera

Za pokretanje lxc kontejnera, koristite sintaksu:

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

Ovdje ćemo pokrenuti 2 kontejnera: tec-container1 iz Debiana 10 i tec-container2 iz Rocky Linuxa 8 .

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

Da navedete lxc kontejnere, izvršite naredbu:

lxc list

Izlaz prikazuje mnoštvo informacija o kontejnerima. Ovo uključuje nazive kontejnera, stanje – bilo da je pokrenuto ili zaustavljeno – IPv4 i IPv6 adrese, tip (bilo da je kontejner ili virtuelna mašina) i brojne snimke.

Da ispišete samo pokrenute kontejnere, pokrenite naredbu:

lxc list | grep -i running

Isto tako, za zaustavljene kontejnere, izvršite:

lxc list | grep -i stopped

Možete istražiti informacije i metriku kontejnera kao što su pokrenuti procesi, korištenje CPU-a i memorije i propusni opseg da spomenete neke pomoću naredbe:

lxc info tec-container1 

Korak 9: Dobijte Shell pristup LXC kontejneru

Možete dobiti bash pristup kontejneru koristeći sintaksu:

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

Da dobijemo pristup ljusci tec-container1, pokrenut ćemo naredbu:

lxc exec tec-container1 bash

Kada dobijete pristup ljusci, možete započeti interakciju sa kontejnerom kao root korisnik pokretanjem uobičajenih naredbi ljuske uključujući ažuriranje sistema kao što je prikazano:

apt update

Da izađete iz kontejnera, pokrenite naredbu:

exit

Alternativno, možete izvršiti naredbe direktno na kontejneru bez pristupa ljusci koristeći sljedeći format:

lxc exec container-name command

Na primjer, možete pokrenuti sljedeće naredbe koje će ažurirati popise paketa, provjeriti verziju OS-a koji se izvodi na Debian kontejneru i provjeriti datum.

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

Korak 10: Povucite/gurnite fajl(e) u LXC kontejner

Druga operacija koju možete izvršiti je prijenos datoteka u i iz kontejnera. Da bismo to demonstrirali, kreirat ćemo novi direktorij u LXD kontejneru i navigirati u njega.

mkdir data && cd data

Zatim ćemo kreirati uzorak datoteke i dodati neke podatke. Da bismo to uradili, kreiraćemo uzorak fajla sa vim editorom

vim file1.txt

Zatim ćemo otkucati uzorak teksta i sačuvati datoteku.

Hello World, Welcome to LXD containers.

Da povučemo datoteku iz kontejnera na lokalni host sistem, koristićemo sintaksu:

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

U ovom slučaju, naredba će biti:

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

Za guranje ili kopiranje datoteke iz lokalnog direktorija u spremnik koristite sintaksu:

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

U ovom slučaju, imamo uzorak datoteke u početnom direktoriju pod nazivom file2.txt koja se kopira na /root/data/ stazu u tec-container2< kontejner.

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

Da potvrdimo postojanje datoteke u kontejneru, pokrenućemo:

lxc exec tec-container2 ls /root/data

Korak 11: Zaustavite/Pokrenite/Ponovo pokrenite i izbrišite LXC kontejnere

Sa lxc uslužnim programom komandne linije možete obavljati zadatke upravljanja kontejnerima kao što su zaustavljanje, pokretanje, ponovno pokretanje i brisanje kontejnera.

Da zaustavite lxc kontejner, koristite sintaksu:

lxc stop container-name

Na primjer, da zaustavimo tec-container1, pokrenut ćemo naredbu:

lxc stop tec-container1

Da pokrenete lxc kontejner, koristite sintaksu:

lxc start container-name

Na primjer, da pokrenemo tec-container1, izvršit ćemo:

lxc start tec-container1

Da ponovo pokrenemo oba lxc kontejnera, pokrenut ćemo naredbu:

lxc restart tec-container1
lxc restart tec-container2

Da biste izbrisali lxc kontejner, morate prvo zaustaviti kontejner, a zatim ga izbrisati. Na primjer, za brisanje ćemo pokrenuti naredbe:

lxc stop tec-container1
lxc delete tec-container1

Alternativno, možete kombinirati ove dvije komande kao što je prikazano.

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

Korak 12: Pronađite pomoć za LXC opcije komandne linije

Da dobijete pomoć za druge opcije komande koje pruža LXC, jednostavno pokrenite naredbu:

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

Zaključak

To je bilo duboko uronjenje u LXD kontejnere i kako možete kreirati i upravljati njima pomoću lxc alata komandne linije. Vjerujemo da vam je ovaj vodič bio od pomoći.