Úvod do Podmana

1. Úvod

V tomto výučbe sa pozrieme na Podman (skratka pre „Pod Manager“), jeho vlastnosti a použitie.

2. Podman

Podman je open-source nástroj na správu kontajnerov na vývoj, správu a prevádzku kontajnerov OCI. Pozrime sa na niektoré výhody Podmanu v porovnaní s inými nástrojmi na správu kontajnerov:

  • Obrázky vytvorené spoločnosťou Podman sú kompatibilné s inými nástrojmi na správu kontajnerov. Obrázky vytvorené spoločnosťou Podman dodržiavajú štandard OCI, a preto ich možno poslať do iných registrov kontajnerov, ako je Docker Hub
  • Môže byť spustený ako normálny používateľ bez potreby práv root. Keď beží ako užívateľ bez oprávnenia root, Podman vytvorí priestor názvov používateľov, v rámci ktorého získa povolenie root. To mu umožňuje pripojiť súborové systémy a nastaviť požadované kontajnery
  • Poskytuje možnosť spravovať pody. Na rozdiel od iných nástrojov na spúšťanie kontajnerov umožňuje Podman používateľovi spravovať pody (skupina jedného alebo viacerých kontajnerov, ktoré fungujú spoločne). Používatelia môžu na podoch vykonávať operácie ako vytvárať, vypisovať a kontrolovať

Existujú však určité obmedzenia pre Podman:

  • Funguje iba na systémoch založených na systéme Linux. V súčasnosti Podman beží iba na operačných systémoch založených na systéme Linux a nemá obal pre Windows a macOS.
  • Pre Docker Compose neexistuje alternatíva. Podman nemá podporu pre miestnu správu viacerých kontajnerov, podobne ako to robí Docker Compose. Implementácia Docker Compose pomocou back-endu Podman sa vyvíja ako súčasť podman-komponovať tento projekt stále prebieha.

3. Porovnanie s Dockerom

Teraz, keď sme pochopili, čo je Podman a aké sú jeho výhody a obmedzenia, porovnajme ho s Dockerom, jedným z najbežnejšie používaných nástrojov na správu kontajnerov.

3.1. Rozhranie príkazového riadku (CLI)

Podman ponúka rovnakú sadu príkazov, ktoré poskytuje klient Docker. Inými slovami, medzi príkazmi týchto dvoch obslužných programov existuje mapovanie jedna k jednej.

Príkazy však majú rady podman ps a obrázky podmana nebude zobrazovať kontajnery alebo obrázky vytvorené pomocou Dockeru. Je to tak preto, lebo lokálne úložisko spoločnosti Podman je / var / lib / containers oproti / var / lib / docker udržiavané Dockerom.

3.2. Model kontajnera

Docker používa pre kontajnery architektúru klient-server, zatiaľ čo Podman používa tradičný model fork-exec bežné v procesoch Linuxu. Kontajnery vytvorené pomocou Podmana sú podradeným procesom nadradeného procesu Podman. To je dôvod, že keď je príkaz version spustený pre Docker aj Podman, Docker zobrazí zoznam verzií klienta aj servera, zatiaľ čo Podman vypíše iba jeho verziu.

Ukážkový výstup pre docker verzia:

Klient: Verzia: 17.12.0-ce Verzia API: 1.35 Go verzia: go1.9.2 Git commit: c97c6d6 Postavené: St Dec 27 20:11:19 2017 OS / Arch: linux / amd64 Server: Motor: Verzia: 17.12.0 -ce API verzia: 1.35 (minimálna verzia 1.12) Go verzia: go1.9.2 Git commit: c97c6d6 Postavené: St 27. decembra 20:09:53 2017 OS / Arch: linux / amd64 Experimentálne: false

Ukážkový výstup pre verzia podman:

Verzia: 0.3.2-dev Go Verzia: go1.9.4 Git Commit: „4f4a78abb40fa0e8407e8a55d5a67a2650d8fd96“ Postavené: pondelok 5. marca 11:10:35 2018 OS / Arch: linux / amd64

Pretože samotný Podman beží ako proces, nevyžaduje na pozadí žiadne procesy démonov. Na rozdiel od Podmana Docker vyžaduje na koordináciu požiadaviek API medzi klientom a serverom proces démona, démona Docker.

3.3. Rootless Mode

Ako už bolo spomenuté, Podman na spustenie svojich príkazov nevyžaduje prístup root. Na druhej strane Docker, ktorý je závislý od procesu démona, vyžaduje oprávnenie root alebo vyžaduje, aby bol užívateľ súčasťou docker skupina aby bolo možné spúšťať príkazy Dockera bez oprávnenia root.

$ sudo usermod -aG ukotviteľný panel $ USER

4. Inštalácia a použitie

Začnime inštaláciou Podman. The podman info príkaz zobrazí informácie o systéme Podman a pomôže skontrolovať stav inštalácie.

$ podman info

Tento príkaz zobrazuje informácie týkajúce sa hostiteľa, ako je verzia jadra, použitý a dostupný swapový priestor a tiež informácie týkajúce sa Podmana, ako sú napríklad registre, ku ktorým má prístup na načítanie a tlačenie obrázkov, používaný ovládač úložiska, umiestnenie úložiska a ďalšie:

hostiteľ: MemFree: 546578432 MemTotal: 1040318464 SwapFree: 4216320000 SwapTotal: 4216320000 arch: amd64 cpus: 2 hostname: base-xenial kernel: 4.4.0-116-generický os: linux uptime: 1m 2,64s nezabezpečené registre: registre: [] registre : registre: - docker.io - registry.fedoraproject.org - register.access.redhat.com store: ContainerStore: number: 0 GraphDriverName: overlay GraphOptions: null GraphRoot: / var / lib / containers / storage GraphStatus: Backing Filesystem: extfs Native Overlay Diff: "true" Podporuje d_type: "true" ImageStore: number: 0 RunRoot: / var / run / containers / storage

Pozrime sa na niektoré základné príkazy Podmana.

4.1. Vytvorenie obrázka

Najskôr sa pozrieme na vytvorenie obrázka pomocou nástroja Podman. Začnime vytvorením a Dockerfile s nasledujúcim obsahom:

FROM centos: posledná RUN yum -y inštalácia httpd CMD ["/ usr / sbin / httpd", "-D", "FOREGROUND"] EXPOSE 80 

Teraz vytvorme obraz pomocou stavať príkaz:

$ podman stavať.

Tu najskôr vytiahneme základný obraz CentOS, nainštalujeme na neho Apache a potom ho spustíme ako proces v popredí s odkrytým portom 80. Na server Apache môžeme získať prístup tak, že spustíme tento obrázok a namapujeme exponovaný port na port hostiteľa.

The stavať príkaz rekurzívne odovzdá všetky priečinky dostupné v kontextovom adresári. Aktuálny pracovný adresár sa predvolene stane kontextom zostavenia, keď nie je zadaný žiadny adresár. Preto sa odporúča, aby ste v kontextovom adresári nemali súbory a priečinky, ktoré nie sú potrebné na vytvorenie obrázka.

4.2. Zoznam dostupných obrázkov

The obrázky podmana príkaz zobrazí zoznam všetkých dostupných obrázkov. Podporuje tiež rôzne možnosti filtrovania obrázkov.

$ podman obrázky

Tento príkaz vypíše všetky obrázky dostupné v miestnom úložisku. Obsahuje informácie, z ktorého úložiska bol obrázok vytiahnutý, značku, jej ID obrázka, čas a veľkosť vytvorenia.

REPOSITÁRNA ZNAČKA ID OBRAZU VYTVORENÁ VEĽKOSŤ docker.io/library/centos najnovšie 0f3e07c0138f pred 2 mesiacmi 227 MB 

4.3. Bežné obrázky

The bežať príkaz vytvorí kontajner daného obrázka a potom ho spustí. Spustime obraz CentOS, ktorý sme vytvorili skôr

$ podman run -p 80:80 -dit centos

Tento príkaz najskôr skontroluje, či je pre CentOS k dispozícii lokálny obrázok. Ak sa obraz nenachádza lokálne, pokúsi sa ho načítať z nakonfigurovaných registrov. Ak sa obrázok v registroch nenachádza, zobrazuje sa chyba pri hľadaní obrázka.

Vyššie uvedený príkaz spustenia určuje mapovanie exponovaného portu 80 kontajnera na port 80 hostiteľa a server dit príznak určuje spustenie kontajnera v odpojenom a interaktívnom režime. Výstupom bude ID vytvoreného kontajnera.

4.4. Mazanie obrázkov

The rmi príkaz odstráni obrázky prítomné v lokálnom úložisku. Viac obrázkov je možné odstrániť tak, že na vstupe zadáte ich ID ako oddeľovač medzery. S uvedením -a príznak odstráni všetky obrázky

$ podman rmi 785188cd988c

4.5. Zoznam kontajnerov

Všetky dostupné kontajnery vrátane tých, ktoré nie sú spustené, je možné zobraziť pomocou priečinka ps -a príkaz. Podobne ako v snímky príkaz, toto sa dá použiť aj s rôznymi možnosťami.

$ podman ps -a

Na výstupe vyššie uvedeného príkazu sú uvedené všetky kontajnery s informáciami, ako je napríklad obrázok, z ktorého bol vytvorený, príkaz použitý na jeho spustenie, jeho stav, porty, na ktorých je spustený, a názov, ktorý je mu priradený.

ID KONTAJNERA OBRAZOVÝ PRÍKAZ VYTVORENÝ V STAVOVÝCH NÁZVECH PRÍSTAVOV eed30719cd37 centos / bin / bash 2019-12-09 02:57:37 +0000 UTC Pred 14 minútami 0.0.0.0:80->80/udp, 0.0.0.0:80-> 80 / tcp reverent_liskov

4.6. Odstraňovanie kontajnerov

The rm príkaz odstráni kontajnery. Tento príkaz neodstráni kontajnery v spustenom alebo pozastavenom stave. Je potrebné ich najskôr zastaviť a potom odstrániť.

$ podman stop eed30719cd37 $ podman rm eed30719cd37

4.7. Vytváranie podov

The pod vytvoriť príkaz vytvorí pod. Príkaz create podporuje rôzne možnosti.

$ podman pod vytvoriť

The pod vytvoriť príkaz vytvorí pod s infra kontajner je k nemu predvolene priradený, pokiaľ nie je výslovne nastavený s infra príznakom ako nepravdivé.

$ podman pod create --infra = false

Infračervený kontajner umožňuje spoločnosti Podman pripojiť rôzne kontajnery do modulu.

4.8. Zoznamy pod

The zoznam pod príkaz zobrazí všetky dostupné pody

$ podman pod zoznam

Na výstupe tohto príkazu sa zobrazia informácie, ako napríklad ID podu, jeho názov, počet pridružených kontajnerov a ID infra kontajnera, ak sú k dispozícii:

POD ID NÁZOV STAV VYTVORENÝ POČET KONTAJNEROV INFRA ID 7e0a68528aed gallant_raman Spustený pred 5 sekundami 1 c6d06673c667

Všetky dostupné príkazy Podmanu a ich použitie nájdete v oficiálnej dokumentácii.

5. Záver

V tomto tutoriáli sme sa pozreli na základné informácie o Podmani a jeho funkciách, jeho porovnaní s Dockerom a niekoľkých dostupných príkazoch.

Ako obvykle je ukážka kódu použitá v tomto článku k dispozícii cez GitHub.