Namestite LXC (Linux Containers) v RHEL, Rocky in AlmaLinux


LXD je opisan kot vsebnik in upravitelj navideznih strojev naslednje generacije, ki ponuja poglobljeno za sisteme Linux, ki se izvajajo znotraj vsebnikov ali kot navidezni stroji.

Zagotavlja slike za neizmerno število distribucij Linuxa s podporo za širok izbor ozadij in vrst omrežij za shranjevanje. Zagotavlja tudi možnost namestitve slik na posamezen osebni računalnik/prenosnik in celo na primer v oblaku.

LXD vam omogoča upravljanje vsebnikov in navideznih računalnikov na tri načine. Uporabite lahko odjemalca lxc ali orodje ukazne vrstice, REST API ali celo integracije tretjih oseb.

Pomembne lastnosti LXD vključujejo:

  • LXD temelji na slikah s slikami za širok izbor distribucij Linuxa.
  • Zgrajena je z varnostjo kot prednostno nalogo.
  • Zagotavlja REST API in orodje ukazne vrstice lxc za interakcijo z vsebniki.
  • Zagotavlja podporo za široko paleto ozadij za shranjevanje, pomnilniških količin in pomnilniških področij.
  • Upravljanje omrežja poteka z ustvarjanjem premostitvenih omrežij in predorov med gostitelji.
  • Napredni nadzor virov, kot so CPE, RAM, uporaba diska, blok V/I in viri jedra.
  • Prilagodljiv in razširljiv – vsebnike lahko namestite v računalnik in konfigurirate gručo, ki lahko združi na tisoče vsebnikov na različnih vozliščih.

Ne smemo zamenjati z odjemalskim orodjem ukazne vrstice lxc, ki ga ponuja LXD, LXC (Linux Container) je priljubljena tehnologija virtualizacije na ravni OS, ki uporablja zmogljiv API in druga orodja, ki uporabnikom omogočajo nemoteno ustvarjanje in upravljanje vsebnikov in navideznih strojev v en sam gostitelj. Vsebuje predloge, jezik orodij in knjižnične vezi.

LXC izkorišča naslednje funkcije jedra za upravljanje procesov:

  • Imenski prostori jedra: pid, mount, uts network in user.
  • CGskupine (kontrolne skupine).
  • Chroots – Uporaba pivot_root.
  • Pravilniki Seccomp.
  • Profila SELinux in Apparmor.

Linuxcontainers.org je krovni projekt za LXD in LXC. Njegov cilj je ponuditi distribucijsko in prodajalno nevtralno platformo za vsebniške tehnologije Linux.

S tem uvodom bomo zdaj pokazali, kako ustvariti in upravljati LXC vsebnike na distribucijah Linuxa, ki temeljijo na RHEL, kot so CentOS, Rocky Linux in AlmaLinux.

Delovni operacijski sistem Linux z minimalno namestitvijo:

  • Namestitev RHEL Linuxa
  • Namestitev CentOS Linux
  • Namestitev Rocky Linuxa
  • Namestitev AlmaLinuxa

1. korak: SELinux nastavite na dovoljeni način

Takoj bomo začeli s konfiguracijo SELinuxa in ga nastavili na dovoljeno. Toda preden to storimo, posodobimo sistemske pakete na naslednji način:

$ sudo dnf update

Če želite SELinux nastaviti na dovoljeno, izvedite ukaz:

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

Da bi to začelo veljati, znova zaženite strežnik.

$ sudo reboot

In potrdite stanje SELinuxa.

$ getenforce

2. korak: Namestite repozitorij EPEL

EPEL je repozitorij iz projekta Fedora, ki ponuja nabor visokokakovostnih paketov za RedHat Enterprise Linux in druge distribucije, ki temeljijo na RHEL.

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

3. korak: Dodajte parametre jedra

Preden namestimo LXD, so potrebni nekateri dodatni parametri. Zato preklopite na root uporabnika:

$ su -

In dodajte parametre, kot sledi.

$ 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

Ko so parametri na mestu, nadaljujte in omogočite Snap.

4. korak: Namestite in omogočite Snap

Najpreprostejši način za namestitev LXD na RHEL 8 je, da ga namestite kot snap paket. Najprej pa namestimo snap, kot sledi.

$ sudo dnf install snapd

To bo namestilo snapd demona ali storitev poleg drugih odvisnosti Pythona, kot je prikazano.

Ko je nameščen snap, nadaljujte in omogočite glavno komunikacijsko vtičnico snap.

$ sudo systemctl enable --now snapd.socket

Poleg tega omogočite klasično podporo tako, da ustvarite simbolno povezavo od /var/lib/snapd/snap do /snap.

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

Če želite posodobiti poti pripenjanja, znova zaženite sistem.

$ sudo reboot

5. korak: Namestite LXD Containerization Manager

Obstajata dva načina za namestitev LXD iz snap. Namestite lahko najnovejšo različico LXD, kot je prikazano.

$ sudo snap install —-classic lxd

Druga možnost je, da namestite najnovejšo stabilno različico LTS, kot sledi:

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

Če želite izvajati ukaze lxc brez preklopa na uporabnika sudo, dodajte trenutno prijavljenega uporabnika v skupino lxd.

$ sudo usermod -aG lxd $USER

Preverite, ali je bil uporabnik dodan v skupino lxd, tako da navedete vse skupine, ki jim uporabnik pripada.

$ groups tecmint

Nato zaženite ukaz newgrp, kot sledi.

$ newgrp lxd

Ukaz spremeni trenutni ID skupine med prijavno sejo. Nastavi trenutni ID skupine na imenovano skupino, ki je lxd.

6. korak: Inicializacija okolja LXD

Preden začnemo ustvarjati in upravljati vsebnike LXD, moramo inicializirati okolje LXD z zagonom ukaza.

$ lxc init

Sledi niz pozivov, ki vam bodo omogočili, da nastavite svoje okolje. Privzete nastavitve bodo delovale v redu, vendar lahko določite svoje lastne nastavitve.

Ustvarili smo pomnilniško področje, imenovano tec-pool z možnostjo lvm kot backend.

Za preverjanje okolja LXD, ki ste ga pravkar konfigurirali, lahko uporabite številne ukaze. Če želite na primer prikazati privzeti profil LXD, izvedite:

$ lxc profile show default

Če želite prikazati omrežne kartice in naslove IPv4 in IPv6, zaženite:

$ lxc network list

Lahko ga še dodatno zožite in prikažete natančnejše informacije o vmesniku lxdbr0, kot sledi.

$ lxc network show lxdbr0

Prav tako lahko preverite pomnilniško področje.

$ lxc storage list

Dodatno lahko dobite zapletene podrobnosti o bazenu za shranjevanje.

$ lxc storage show tec-pool

Če želite prikazati vsebnike lxc, ki se izvajajo, zaženite ukaz:

$ lxc list

Trenutno še nimamo tekočih kontejnerjev. Tako boste dobili prazno tabelo samo z oznakami stolpcev.

7. korak: Seznam vnaprej izdelanih slik vsebnika LXC

Tako kot Docker, platforma LXC ponuja skladišče vnaprej izdelanih slik, iz katerih lahko ustvarite vsebnike. Če želite prikazati vse vnaprej izdelane slike za vse operacijske sisteme, vključno z navideznimi stroji, zaženite ukaz:

$ lxc image list images: 

To zapolni ogromen seznam slik vsebnikov in virtualnih strojev za vse operacijske sisteme. Če se želite zožiti na določeno distribucijo Linuxa, uporabite sintakso:

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

Če želite na primer poiskati razpoložljive slike za Rocky Linux, zaženite ukaz:

$ lxc image list images: grep -i rocky

Če iščete slike Debian, zaženite ukaz:

$ lxc image list images: grep -i debian

8. korak: Zagon LXC vsebnikov

Za zagon vsebnikov lxc uporabite sintakso:

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

Tukaj bomo zagnali 2 vsebnika: tec-container1 iz Debiana 10 in tec-container2 iz Rocky Linux 8.

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

Če želite prikazati vsebnike lxc, izvedite ukaz:

$ lxc list

Izhod prikazuje številne informacije o vsebnikih. To vključuje imena vsebnikov, stanje – ali je v teku ali ustavljeno – naslova IPv4 in IPv6, vrsto (bodisi vsebnik ali navidezni stroj) in številne posnetke.

Če želite prikazati samo tekoče vsebnike, zaženite ukaz:

$ lxc list | grep -i running

Podobno za ustavljene vsebnike izvedite:

$ lxc list | grep -i stopped

Z ukazom lahko preverite informacije in meritve vsebnika, kot so tekoči procesi, izkoriščenost CPE in pomnilnika ter pasovna širina, da jih omenite nekaj:

$ lxc info tec-container1 

9. korak: pridobite dostop lupine do vsebnika LXC

Do vsebnika lahko pridobite bash dostop s sintakso:

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

Za pridobitev dostopa lupine do tec-container1 bomo zagnali ukaz:

$ lxc exec tec-container1 bash

Ko pridobite dostop do lupine, lahko začnete z interakcijo z vsebnikom kot root uporabnik z izvajanjem običajnih ukazov lupine, vključno s posodabljanjem sistema, kot je prikazano:

$ apt update

Za izhod iz vsebnika zaženite ukaz:

$ exit

Lahko pa tudi izvedete ukaze neposredno v vsebniku brez dostopa do lupine z uporabo naslednje oblike:

$ lxc exec container-name command

Na primer, lahko zaženete naslednje ukaze, ki bodo posodobili sezname paketov, preverili različico operacijskega sistema, ki se izvaja v vsebniku Debian, in preverili datum.

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

10. korak: Potegnite/potisnite datoteko(e) v vsebnik LXC

Druga operacija, ki jo lahko izvedete, je prenos datotek v in iz vsebnika. Da bi to prikazali, bomo v vsebniku LXD ustvarili nov imenik in se pomaknili vanj.

# mkdir data && cd data

Nato bomo ustvarili vzorčno datoteko in dodali nekaj podatkov. V ta namen bomo ustvarili vzorčno datoteko z urejevalnikom vim

# vim file1.txt

Nato bomo vnesli nekaj vzorčnega besedila in shranili datoteko.

Hello World, Welcome to LXD containers.

Za povlečenje datoteke iz vsebnika v lokalni gostiteljski sistem bomo uporabili sintakso:

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

V tem primeru bo ukaz naslednji:

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

Za potiskanje ali kopiranje datoteke iz lokalnega imenika v vsebnik uporabite sintakso:

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

V tem primeru imamo vzorčno datoteko v domačem imeniku, imenovano file2.txt, ki se kopira na pot /root/data/ v vsebniku tec-container2.

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

Za potrditev obstoja datoteke v vsebniku bomo zagnali:

$ lxc exec tec-container2 ls /root/data

11. korak: Ustavi/Zaženi/Ponovni zagon in izbriši vsebnike LXC

S pripomočkom ukazne vrstice lxc lahko izvajate naloge upravljanja vsebnikov, kot so ustavitev, zagon, ponovni zagon in brisanje vsebnikov.

Če želite ustaviti vsebnik lxc, uporabite sintakso:

$ lxc stop container-name

Če želite na primer ustaviti tec-container1, bomo zagnali ukaz:

$ lxc stop tec-container1

Za zagon vsebnika lxc uporabite sintakso:

$ lxc start container-name

Na primer, če želite zagnati tec-container1, bomo izvedli:

$ lxc start tec-container1

Za ponovni zagon obeh vsebnikov lxc bomo zagnali ukaz:

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

Če želite izbrisati vsebnik lxc, morate najprej ustaviti vsebnik in ga nato izbrisati. Za brisanje bomo na primer zagnali ukaze:

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

Druga možnost je, da združite ta dva ukaza, kot je prikazano.

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

12. korak: Poiščite pomoč pri možnostih ukazne vrstice LXC

Če želite dobiti pomoč pri drugih možnostih ukazov, ki jih ponuja LXC, preprosto zaženite ukaz:

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

To je bil globok potop v vsebnike LXD in kako jih lahko ustvarite in upravljate s pomožnim orodjem ukazne vrstice lxc. Verjamemo, da se vam je ta priročnik zdel v pomoč.