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
Kimenet ⇒ Ez 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.