Bevezetés a Podman-ba

1. Bemutatkozás

Ebben az oktatóanyagban megvizsgáljuk a Podmant (rövidítve: „Pod Manager”), annak jellemzőit és használatát.

2. Podman

A Podman egy nyílt forráskódú tárolókezelő eszköz OCI tárolók fejlesztéséhez, kezeléséhez és futtatásához. Vessünk egy pillantást a Podman néhány előnyére, összehasonlítva más konténerkezelő eszközökkel:

  • A Podman által készített képek kompatibilisek a többi tárolókezelő eszközzel. A Podman által készített képek betartják az OCI szabványt, és így más konténerregiszterekbe, például a Docker Hubba is elküldhetők
  • Futtatható normál felhasználóként root jogosultságok igénye nélkül. Ha nem root felhasználóként fut, a Podman létrehoz egy felhasználói névteret, amelyen belül megszerzi a root jogosultságot. Ez lehetővé teszi fájlrendszerek csatlakoztatását és a szükséges tárolók beállítását
  • Lehetőséget nyújt a hüvelyek kezelésére. A többi tároló futásidejű eszközzel ellentétben a Podman lehetővé teszi a felhasználó számára, hogy kezelje a hüvelyeket (egy vagy több tároló együttesen működő csoportja). A felhasználók olyan műveleteket hajthatnak végre, mint például létrehozás, felsorolás, ellenőrzés a hüvelyeken

A Podmannak azonban vannak bizonyos korlátai:

  • Csak Linux alapú rendszereken fut. Jelenleg a Podman csak Linux alapú operációs rendszereken fut, és nincs burkolója a Windows és a macOS számára.
  • A Docker Compose-nak nincs alternatívája. A Podman nem rendelkezik több tároló helyi kezelésével, hasonlóan a Docker Compose-hoz. A Docker Compose megvalósítása a Podman háttérprogram használatával a podman-alkot projektet, de ez még folyamatban van.

3. Összehasonlítás Dockerrel

Most, hogy megértettük, mi a Podman, és mik az előnyei és korlátai, hasonlítsuk össze a Dockerrel, az egyik legszélesebb körben használt konténerkezelő eszközzel.

3.1. Parancssori interfész (CLI)

A Podman ugyanazokat a parancsokat kínálja, amelyeket a Docker kliens tesz ki. Más szavakkal, a két segédprogram parancsai között egy az egyben van leképezés.

A parancsok azonban tetszik podman ps és podman képek nem jeleníti meg a Docker használatával létrehozott tárolókat vagy képeket. Ennek oka, hogy Podman helyi adattára az / var / lib / container szemben a / var / lib / docker fenntartja Docker.

3.2. Konténer modell

A Docker kliens-kiszolgáló architektúrát használ a tárolókhoz, míg a Podman a hagyományos fork-exec modellt használja általános a Linux folyamatokban. A Podman használatával létrehozott tárolók a szülő Podman folyamat gyermekfolyamata. Ez az oka annak, hogy amikor a version parancs fut mind a Docker, mind a Podman esetében, a Docker felsorolja mind az ügyfél, mind a szerver verzióit, míg a Podman csak annak verzióját sorolja fel.

Minta kimenet dokkoló verzió:

Kliens: Verzió: 17.12.0-ce API-verzió: 1.35 Go verzió: go1.9.2 Git-elkötelezettség: c97c6d6 Built: Wed Dec 27 20:11:19 2017 OS / Arch: linux / amd64 Server: Engine: Verzió: 17.12.0 -ce API-verzió: 1.35 (minimum 1.12-es verzió) Go verzió: go1.9.2 Git-elkötelezettség: c97c6d6 Építve: sze. 27. sz., 20:09:53 2017 OS / Arch: linux / amd64

Minta kimenet podman verzió:

Verzió: 0.3.2-dev Go Verzió: go1.9.4 Git Commit: "4f4a78abb40fa0e8407e8a55d5a67a2650d8fd96" Épült: Hétfõ 5, 11:10:35 2018 OS / Arch: linux / amd64

Mivel maga a Podman folyamatként fut, nem igényel semmilyen démon folyamatot a háttérben. A Podman-nal ellentétben a Docker egy démonfolyamatot, a Docker démonot igényel az API-kérések koordinálásához az ügyfél és a szerver között.

3.3. Gyökértelen mód

Mint korábban említettük, a Podman nem igényel root hozzáférést a parancsok futtatásához. A Docker viszont a démon folyamatától függ, root jogosultságokat igényel, vagy megköveteli, hogy a felhasználó részt vegyen a dokkmunkás csoport hogy root jogosultság nélkül futtathassa a Docker parancsokat.

$ sudo usermod -aG dokkoló $ USER

4. Telepítés és használat

Kezdjük a Podman telepítésével. A podman info parancs megjeleníti a Podman rendszer adatait, és segít a telepítés állapotának ellenőrzésében.

$ podman info

Ez a parancs megjeleníti a gazdagéppel kapcsolatos információkat, például a Kernel verzióját, a felhasznált és rendelkezésre álló cserefelületet, valamint a Podmanhoz kapcsolódó információkat, például a regisztrációkat, amelyekhez hozzáférhet a képek húzásához és tolásához, az általa használt tároló-illesztőprogramot, a tárolási helyet és más információkat:

gazdagép: MemFree: 546578432 MemTotal: 1040318464 SwapFree: 4216320000 SwapTotal: 4216320000 arch: amd64 cpus: 2 hostname: base-xenial kernel: 4.4.0-116-generic os: linux uptime: 1m 2.64s nem biztonságos regiszterek: regiszterek: [] regiszterek : registries: - docker.io - register.fedoraproject.org - register.access.redhat.com áruház: ContainerStore: szám: 0 GraphDriverName: overlay GraphOptions: null GraphRoot: / var / lib / containers / storage GraphStatus: Fájlrendszer támogatása: extfs Native Overlay Diff: "true" Támogatja a d_type: "true" ImageStore: szám: 0 RunRoot: / var / run / container / storage

Vessünk egy pillantást a Podman néhány alapvető parancsára.

4.1. Kép létrehozása

Először megvizsgáljuk a kép létrehozását a Podman segítségével. Kezdjük azzal, hogy létrehozunk egy Dockerfile a következő tartalommal:

FENT centektől: legújabb RUN yum -y telepítse a httpd CMD-t ["/ usr / sbin / httpd", "-D", "FOREGROUND"] 80-as expozíció 

Most hozzuk létre a képet a épít parancs:

$ podman build.

Itt először a CentOS alapképét húzzuk, a tetejére telepítjük az Apache-ot, majd futtatjuk előtérként a 80-as porttal. Hozzáférhetünk az Apache szerverhez úgy, hogy futtatjuk ezt a képet, és a kitett portot egy gazda portra térképezzük fel.

A épít parancs rekurzívan továbbítja a helyi könyvtárban elérhető összes mappát. A jelenlegi munkakönyvtár alapértelmezés szerint akkor lesz az építési kontextus, ha nincs megadva könyvtár. Ezért ajánlatos, hogy ne legyenek a fájl létrehozásához szükséges fájlok és mappák a helyi könyvtárban.

4.2. Elérhető képek felsorolása

A podman képek parancs felsorolja az összes rendelkezésre álló képet. Támogatja a képek szűrésének különféle lehetőségeit is.

$ podman képek

Ez a parancs felsorolja a helyi adattárban elérhető összes képet. Tartalmazza azt az információt, hogy melyik tárból vették le a képet, a címkét, képazonosítóját, létrehozott idejét és méretét.

TÁROLÓ CÍMKÉKKÉP IDŐ LÉTREHOZOTT MÉRET docker.io/library/centos latest 0f3e07c0138f 2 hónappal ezelőtt 227 MB 

4.3. Futó képek

A fuss parancs létrehoz egy tárolót egy adott képből, majd futtatja. Futtassuk a korábban létrehozott CentOS-képet

$ podman run -p 80:80 -dit cent

Ez a parancs először ellenőrzi, hogy van-e helyi kép a CentOS számára. Ha a kép nincs helyben, akkor megpróbálja lekérni a képet a konfigurált regiszterekből. Ha a kép nem szerepel a nyilvántartásokban, akkor hibaüzenetet jelenít meg azzal kapcsolatban, hogy nem találja a képet.

A fenti futtatási parancs megadja, hogy a tároló 80-as portját feltérképezze a gazdagép és a 80-as portjához dit A flag megadja, hogy a tároló külön és interaktív módban fusson. A létrehozott tároló azonosítója lesz a kimenet.

4.4. Képek törlése

A rmi parancs eltávolítja a helyi adattárban lévő képeket. Több kép eltávolítható úgy, hogy azonosítójukat szóközzel elválasztva adják meg a bemenetben. A -a flag eltávolítja az összes képet

$ podman rmi 785188cd988c

4.5. A konténerek felsorolása

Az összes rendelkezésre álló tároló, beleértve azokat is, amelyek nem futnak, felsorolhatók a ps -a parancs. Hasonló a képek parancsot, ez különféle opciókkal is használható.

$ podman ps -a

A fenti parancs kimenete felsorolja az összes tárolót az információkkal, például a képpel, amelyből létrehozták, az indításhoz használt parancsot, állapotát, futó portjait és a hozzá rendelt neveket.

A STATUS PORTS NEVEKBEN LÉTREHOZOTT KONTÉNER ID KÉP PARANCS eed30719cd37 centos / bin / bash 2019-12-09 02:57:37 +0000 UTC Fel 14 perccel ezelőtt 0.0.0.0:80->80/udp, 0.0.0.0:80-> 80 / tcp reverent_liskov

4.6. Konténerek törlése

A rm parancs eltávolítja a konténereket. Ez a parancs nem távolítja el a tárolókat futó vagy szüneteltetett állapotban. Először le kell állítani őket, majd eltávolítani őket.

$ podman stop eed30719cd37 $ podman rm eed30719cd37

4.7. Podok létrehozása

A pod létrehozása parancs létrehoz egy hüvelyt. A create parancs különböző opciókat támogat.

$ podman pod létrehozása

A pod létrehozása parancs létrehoz egy pod-ot egy infra tároló alapértelmezés szerint társítva, kivéve, ha kifejezetten infra jelzőként van beállítva hamis.

$ podman pod create --infra = hamis

Az Infra konténer lehetővé teszi a Podman számára, hogy különféle konténereket csatlakoztasson a tokba.

4.8. A hüvelyek felsorolása

A podlista parancs megjeleníti az összes rendelkezésre álló hüvelyt

$ podman pod lista

A parancs kimenete olyan információkat jelenít meg, mint a pod azonosítója, annak neve, a társított tárolók száma, az infra tároló azonosítója, ha elérhető:

POD ID NÉV ÁLLAPOT LÉTREHOZOTT KONTÉNEREK SZÁMA INFRA ID 7e0a68528aed gallant_raman 5 másodperccel ezelőtt fut 1 c6d06673c667

Az összes rendelkezésre álló Podman parancs és használatuk megtalálható a hivatalos dokumentációban.

5. Következtetés

Ebben az oktatóanyagban megvizsgáltuk a Podman alapjait és szolgáltatásait, összehasonlítását a Dockerrel és néhány elérhető parancsot.

Szokás szerint az ebben a cikkben használt kódminta a GitHubon keresztül érhető el.