Weboldal keresés

Konténerek kezelése Podman és Skopeo segítségével az RHEL 8-ban


Az egyik kihívás, amellyel a fejlesztők a múltban szembesültek, az alkalmazások megbízható futtatása több számítástechnikai környezetben. Az alkalmazások gyakran nem a várt módon futottak, vagy hibákat észleltek, és teljesen meghiúsultak. És itt született meg akonténerek koncepciója.

Mik azok a konténerképek?

A tárolóképek statikus fájlok, amelyeket végrehajtható kóddal szállítanak, amely elszigetelt környezetben fut. A konténerkép rendszerkönyvtárakat, függőségeket és egyéb platformbeállításokat tartalmaz, amelyekre az alkalmazásnak szüksége van a különféle környezetekben való futtatáshoz.

A Red Hat Linux hasznos konténereszközök készletét kínálja, amelyek segítségével közvetlenül dolgozhat a Linux-tárolókkal, Docker parancsokat igényelve. Ezek tartalmazzák:

  • Podman – Ez egy démon nélküli konténermotor az OCI tárolók futtatásához és kezeléséhez akár root, akár gyökér nélküli módban. A Podman hasonló a Docker-hez, és ugyanazokkal a parancslehetőségekkel rendelkezik, kivéve, hogy a Docker egy démon. A podman használatával ugyanúgy lehívhatja, futtathatja és kezelheti a tárolóképeket, mint a Docker használatával. A Podman számos fejlett funkcióval rendelkezik, teljes mértékben integrálható a rendszerekkel, és felhasználói névtér-támogatást kínál, amely magában foglalja a tárolók futtatását root felhasználó nélkül.
  • Skopeo: Ez egy parancssori eszköz a tárolóképek átmásolására egyik rendszerleíró adatbázisból a másikba. A Skopeo segítségével képeket másolhat egy adott gazdagépre és onnan, valamint képeket másolhat egy másik tároló-nyilvántartásba vagy környezetbe. A képek másolásán kívül felhasználhatja a különböző nyilvántartásokból származó képek megtekintésére, valamint aláírások segítségével képek létrehozására és ellenőrzésére.
  • Buildah: Ez egy parancssori eszközkészlet, amellyel OCI tárolóképek hozhatók létre és kezelhetők Docker fájlokkal.

Ebben a cikkben a tárolók podman és Skopeo használatával történő kezelésével foglalkozunk.

Tárolóképek keresése távoli nyilvántartásból

A podman keresés parancs lehetővé teszi a kiválasztott távoli nyilvántartásokban a tárolóképek keresését. A nyilvántartások alapértelmezett listája a registries.conf fájlban található, amely az /etc/containers/ könyvtárban található.

A nyilvántartásokat 3 szakasz határozza meg.

  • [registries.search] – Ez a szakasz azokat az alapértelmezett nyilvántartásokat adja meg, amelyekben a podman tárolóképeket kereshet. Megkeresi a kért képet a registry.access.redhat.com, registry.redhat.io, és docker.io nyilvántartásban.

  • [registries.insecure] – Ez a szakasz azokat a nyilvántartásokat határozza meg, amelyek nem alkalmazzák a TLS-titkosítást, azaz a nem biztonságos nyilvántartásokat. Alapértelmezés szerint nincs megadva bejegyzés.

  • [registries.block] – blokkolja vagy megtagadja a hozzáférést a megadott nyilvántartásokhoz a helyi rendszerről. Alapértelmezés szerint nincs megadva bejegyzés.

A podman parancsot futtató normál (nem root) felhasználóként megadhatja saját registries.conf fájlját a kezdőkönyvtárában ($HOME/.config). /containers/registries.conf) a rendszerszintű beállítások felülbírálásához.

Szabályok a nyilvántartások megadásakor

A nyilvántartások megadásakor tartsa szem előtt a következőket:

  • Minden nyilvántartást egyetlen idézőjelnek kell tartalmaznia.
  • A nyilvántartások megadhatók gazdagépnév vagy IP-cím használatával.
  • Ha több nyilvántartás van megadva, akkor azokat vesszővel kell elválasztani.
  • Ha a rendszerleíró adatbázis nem szabványos portot használ – a 443-as TCP-port a biztonságos, a 80-as pedig a nem biztonságos, akkor a portszámot a rendszerleíró adatbázis neve mellett kell megadni, pl. registry.example.com:5566.

Tárolókép keresése a rendszerleíró adatbázisban a szintaxis használatával:

podman search registry/container_image

Például egy Redis kép megkereséséhez a registry.redhat.io beállításjegyzékben adja ki a következő parancsot:

podman search registry.redhat.io/redis

MariaDB tárolókép kereséséhez futtassa.

podman search registry.redhat.io/mariadb

Ha részletes leírást szeretne kapni egy tárolóképről, használja a --no-trunc opciót a kapott eredmények közül a tárolókép neve előtt. Például megpróbáljuk beszerezni a MariaDB konténer képének részletes leírását, az alábbi módon:

podman search --no-trunc registry.redhat.io/rhel8/mariadb-103

Konténerképek húzása

A tárolóképek távoli rendszerleíró adatbázisból való lekéréséhez vagy lekéréséhez először hitelesíteni kell, mielőtt bármi mást. Például a MariaDB tárolókép lekéréséhez először jelentkezzen be a Redhat beállításjegyzékbe:

podman login

Adja meg felhasználónevét és jelszavát, majd nyomja meg az „ENTER” gombot a billentyűzeten. Ha minden jól megy, megerősítő üzenetet kell kapnia, hogy a rendszerleíró adatbázisba való bejelentkezés sikeres volt.

Login Succeeded!

Most kihúzhatja a képet az alábbi szintaxissal:

podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>

A <registry> a távoli gazdagépre vagy rendszerleíró adatbázisra utal, amely a TCP <port> tárolórendszerképeinek tárházát biztosítja. A <namespace> és a <name> együttesen ad meg egy tárolóképet a beállításjegyzékben található <namespace> alapján. Végül a <tag> opció határozza meg a tárolókép verzióját. Ha egyik sincs megadva, akkor az alapértelmezett címke – legfrissebb – kerül felhasználásra.

Mindig ajánlott megbízható nyilvántartások hozzáadása, vagyis olyanok, amelyek titkosítást biztosítanak, és nem teszik lehetővé, hogy a névtelen felhasználók véletlenszerű névvel fiókokat hozzanak létre.

A MariaDB kép letöltéséhez futtassa a parancsot:

podman pull registry.redhat.io/rhel8/mariadb-103
  • A <registry> – registry.redhat.io
  • A <namespace> – rhel8
  • A <name> – MariaDB
  • A <tag> – 103

A következő konténerképek lekéréséhez nincs szükség további bejelentkezésre, mivel Ön már hitelesített. Egy Redis tárolókép letöltéséhez egyszerűen futtassa:

podman pull registry.redhat.io/rhscl/redis-5-rhel7

Tárolóképek listázása

Ha végzett a képek lehúzásával, a podman images parancs futtatásával megtekintheti a gazdagépen jelenleg meglévő képeket.

podman images

Konténerképek vizsgálata

Egy tároló futtatása előtt mindig jó ötlet megvizsgálni a képet, és megérteni, hogy mit csinál. A podman inspect parancs rengeteg metaadatot nyomtat ki a tárolóról, például az operációs rendszerről és az architektúráról.

Egy kép vizsgálatához futtassa a podman inspect parancsot, majd írja be a képazonosítót vagy a tárat.

podman inspect IMAGE ID
OR
podman inspect REPOSITORY

Az alábbi példában a MariaDB tárolót vizsgáljuk.

podman inspect registry.redhat.io/rhel8/mariadb-103

Egy tároló konkrét metaadatainak lekéréséhez adja meg a --format opciót, majd a metaadatokat és a tárolóazonosítót (képazonosító vagy név).

Az alábbi példában a „Címkék” szakasz alá tartozó RHEL 8 alapkonténer architektúrájáról és leírásáról keresünk információkat.

podman inspect --format=’{{.Labels.architecture}}’ image ID
podman inspect --format=’{{.Labels.description}}’ image ID

Egy másik rendszerleíró adatbázisból származó távoli kép vizsgálatához használja a skopeo inspect parancsot. Az alábbi példában egy RHEL 8 indítóképet vizsgálunk, amelyet a Docker tárol.

skopeo inspect docker://registry.redhat.io/rhel8-beta/rhel-init

Tárolóképek címkézése

Amint azt már észrevette, a képnevek általában általános jellegűek. Például a redis kép felirata:

registry.redhat.io/rhscl/redis-5-rhel7

A képek címkézése intuitívabb nevet ad nekik, hogy jobban megértsék, mit tartalmaznak. A podman tag paranccsal létrehozhat egy képcímkét, amely lényegében egy különböző részekből álló képnév álneve.

Ezek:

registry/username/NAME:tag

Például a 646f2730318c azonosítójú Redis-kép általános nevének megváltoztatásához a következő parancsot hajtjuk végre:

podman tag 646f2730318c myredis

Címke hozzáadásához a végére írjon be egy teljes kettőspontot, majd a címke számát:

podman tag 646f2730318c myredis:5.0

A címkeszám hozzáadása nélkül csak az attribútum lesz hozzárendelve.

Tárolóképek futtatása

Tároló futtatásához használja a podman run parancsot. Például:

podman run image_id

Ha egy tárolót csendesen futtatni szeretne a háttérben démonszolgáltatásként, használja a -d kapcsolót az ábrán látható módon.

podman run -d image_id

Például a 646f2730318c azonosítójú redis kép futtatásához a következő parancsot fogjuk meghívni:

podman run -d 646f2730318c

Ha operációs rendszeren, például RHEL 8 alapképen alapuló tárolót futtat, a -it direktíva használatával férhet hozzá a shellhez. A -i opció interaktív munkamenetet hoz létre, míg a -t terminál munkamenetet hoz létre. A --name beállítás a tároló nevét mybash-ra állítja, míg az alapkép ecbc6f53bba0 képazonosítója.

podman run -it --name=mybash ecbc6f53bba0

Ezt követően bármilyen shell-parancsot futtathat. Az alábbi példában a tárolókép operációs rendszer verzióját ellenőrizzük.

cat /etc/os-release

A tárolóból való kilépéshez egyszerűen hívja meg az exit parancsot.

exit

Amint kilép a tartályból, automatikusan leáll. A tároló újraindításához használja a podman start parancsot a -ai jelzővel, az ábrán látható módon.

podman start -ai mybash

Ez ismét hozzáférést biztosít a héjhoz.

Futó tárolóképek listázása

A jelenleg futó tárolók listázásához használja a podman ps parancsot az ábra szerint.

podman ps

Az összes tároló megtekintéséhez, beleértve azokat is, amelyek a futás után kiléptek, használja a következő parancsot:

podman ps -a

Konfigurálja a tárolóképeket az automatikus indításhoz a Systemd Service alatt

Ebben a részben arra összpontosítunk, hogyan konfigurálható egy tároló közvetlenül egy RHEL rendszeren, mint rendszerszolgáltatás.

Először is szerezze be a kívánt képet. Ebben az esetben a Redis képet a docker hubból húztuk ki:

podman pull docker.io/redis

Ha a SELinux fut a rendszerén, aktiválnia kell a container_manage_cgroup logikai értéket, hogy a systemd tárolókat futtathassa.

setsebool -p container_manage_cgroup on

Ezt követően futtassa a tárolóképet a háttérben, és rendelje hozzá a kívánt képnévhez. Ebben a példában a képünket redis_server néven neveztük el, és a tároló 6379 portját hozzárendeltük az RHEL 8 gazdagéphez.

podman run -d --name redis_server -p 6379:6379 redis

Ezután létrehozunk egy systemd egység konfigurációs fájlt a redis számára az /etc/systemd/system/ könyvtárban.

vim /etc/systemd/system/redis-container.service

Illessze be az alábbi tartalmat a fájlba.

[Unit]
Description=Redis container

[Service]
Restart=always
ExecStart=/usr/bin/podman start -a redis_server
ExecStop=/usr/bin/podman stop -t 2 redis_server

[Install]
WantedBy=local.target

Mentse el és lépjen ki a fájlból.

Ezután állítsa be a tárolót úgy, hogy a rendszerindításkor automatikusan elinduljon.

systemctl enable redis-container.service

Ezután indítsa el a tárolót, és ellenőrizze annak működési állapotát.

systemctl start redis-container.service
systemctl status redis-container.service

Állandó tárhely konfigurálása tárolóképekhez

Tárolók futtatásakor célszerű állandó külső tárolót konfigurálni a gazdagépen. Ez biztonsági mentést biztosít arra az esetre, ha a tároló összeomlik vagy véletlenül eltávolítják.

Az adatok megőrzéséhez a gazdagépen található könyvtárat leképezzük a tárolón belüli könyvtárra.

podman run --privileged -it -v /var/lib/containers/backup_storage:/mnt registry.redhat.io/ubi8/ubi /bin/bash

A --privileged beállítás akkor kerül átadásra, ha a SELinux kényszerítésre van állítva. A -v opció megadja a külső kötetet, amely a gazdagépen található. A tárolókötet itt a /mnt könyvtár.

Miután elértük a parancsértelmezőt, a képen látható módon létrehozunk egy testing.txt mintafájlt a /mnt könyvtárban.

echo "This tests persistent external storage" > /mnt/testing.txt

Ezután kilépünk a tárolóból, és ellenőrizzük, hogy a fájl létezik-e a gazdagépen található külső tárolóban.

exit
cat /var/lib/containers/backup_storage/testing.txt

KimenetEz teszteli a tartós külső tárhelyet.

Konténerek leállítása és eltávolítása

Ha végzett a tároló futtatásával, leállíthatja azt a podman stop paranccsal, amelyet a container-id követ, amelyet a podman ps< fájlból szerezhet be. parancsot.

podman stop container-id

A már nem szükséges tárolók eltávolításához először győződjön meg arról, hogy leállítja, majd hívja meg a podman rm parancsot, amelyet opcióként a tárolóazonosító vagy név megadása követ.

podman rm container-id

Ha egyszerre több tárolót szeretne eltávolítani egyetlen paranccsal, adja meg a tároló azonosítóit szóközzel elválasztva.

podman rm container-id-1 container-id-2 container-id-3

Az összes tároló törléséhez futtassa a következő parancsot:

podman rm -a

Kép eltávolítása

Egy kép eltávolításához először győződjön meg arról, hogy a képekből származó összes tároló leállt és eltávolítva az előző altéma szerint.

Ezután folytassa, és futtassa a podman -rmi parancsot, majd írja be a kép azonosítóját a képen látható módon:

podman -rmi image-id

Következtetés

Ezzel zárja ezt a fejezetet, amely a RHEL 8 tárolóinak kezeléséről és a velük való munkáról szól. Reméljük, hogy ez az útmutató megfelelő megértést nyújtott a tárolókról, valamint arról, hogy hogyan kommunikálhat és kezelhet őket RHEL rendszerén a podman és a Skopeo használatával.