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č.