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.