GNU/Linux >> Znalost Linux >  >> Linux

Výuka Podman – Začněte s Podmanem

Tento tutoriál vysvětluje, jak začít s Podmanem v operačních systémech Linux. Na konci tohoto výukového programu Podman se naučíte základy Podman, jako je vyhledávání a stahování obrázků, vytvoření nového kontejneru z obrázku, spuštění kontejneru, odstranění kontejneru a vytvoření vlastního obrázku z kontejneru a další.

Než začneme s Podmanem, ujistěte se, že jste na svůj Linux nainstalovali Podman.

  • Co je Podman a jak nainstalovat Podman v Linuxu

Začněte s Podmanem

Podman poskytuje rozhraní příkazového řádku (CLI) podobné Dockeru kontejnerový motor. Podman si ve skutečnosti klade za cíl být náhradou za docker klienta poskytovaného Dockerem.

Příkazy Podman a Docker jsou téměř stejné. docker můžete jednoduše nahradit s podman ve většině příkazů dockeru. Například docker run příkaz se změní na podman run a docker build se stane podman build a tak dále.

Můžete dokonce vytvořit docker alias pro podman jako níže:

$ alias docker=podman

Od této chvíle můžete používat oba docker a podman příkazy současně. Pokud například spustíte docker ps, automaticky se spustí podman příkaz ps. Přechod z Docker na Podman se stal mnohem jednodušší!

1. Získání pomoci Podmana

První věc, kterou pravděpodobně budete chtít udělat po instalaci jakékoli aplikace, je podívat se do sekce nápovědy.

Chcete-li zobrazit příručku nápovědy Podman spolu se seznamem dostupných dílčích příkazů a obecných možností, spusťte:

$ podman --help

Chcete-li se naučit použití libovolného dílčího příkazu, například attach , jednoduše udělejte:

$ podman připojit --help

2. Hledat obrázky

Naštěstí obrázky vytvořené Dockerem a Podmanem jsou kompatibilní se standardem OCI. Podman tak může odesílat a stahovat obrázky z registrů kontejnerů, jako je Docker Hub a Quay.io .

Vyhledejme obrázky Alpine Linux pomocí příkazu:

$ podman search alpine

Jak můžete vidět, Podman uvádí obrázky Alpine z centra Docker a Quay.

Při stahování obrázků si můžete vybrat, odkud je chcete získat.

Podobně můžete vyhledávat obrázky založené na Arch Linuxu, jak je uvedeno níže:

$ podman hledat archlinux

Docker hub and Quay má spoustu obrázků různých typů. Ať už se jedná o aplikaci nebo operační systém, najdete předpřipravené obrázky kontejnerů z těchto registrů.

3. Stáhnout obrázky

Pro účely této příručky si stáhnu základní obrázek Redhat 8 Universal (UBI).

Chcete-li stáhnout obrázek Redhat pomocí aplikace Podman, spusťte:

$ podman pull redhat/ubi8

Budete požádáni o výběr registru kontejnerů, ze kterého chcete stahovat. Vybral jsem si Docker hub. Před vybraným registrem se zobrazí malá šipka.

? Vyberte prosím obrázek:registry.fedoraproject.org/redhat/ubi8:latest registry.access.redhat.com/redhat/ubi8:latest ▸ docker.io/redhat/ubi8:latest quay.io/redhat/ubi8:latest 

Obraz kontejneru bude stažen ze zvoleného registru.

 ✔ docker.io/redhat/ubi8:latestTrying vytáhnout docker.io/redhat/ubi8:latest...Getting zdrojový obraz signaturesCopying blob a50df8fd88fe udělal Kopírování blob 1cadda38f72d udělal Kopírování config 0ced1c7c9b udělal Psaní manifest na obrázek destinationStoring signatures0ced1c7c9b23d0e107c7b15d5a0017abbbcf7e64e49a4c9f9efa1b9589ca8b68   

Můžete si stáhnout a spustit různé typy obrázků bez ohledu na typ distribuce, který používáte. Můžete si například stáhnout a používat obrázky Alpine na hostiteli Fedory a naopak.

$ podman pull alpine

Můžete si dokonce stáhnout konkrétní verzi obrázku. Následující příkaz stáhne obrázek Ubuntu verze 20.04:

$ podman pull ubuntu:20.04

Protože používáme Podman jako uživatel bez oprávnění root, všechny obrázky kontejnerů jsou uloženy v domovském adresáři uživatele, tj. $HOME/.local/share/containers/storage , namísto /var/lib/containers .

$ ls ~/.local/share/containers/storage/ cache libpod mounts overlay overlay-containers overlay-images overlay-layers storage.lock tmp userns.lock

4. Zobrazit obrázky

Chcete-li zobrazit seznam místně stažených obrázků, spusťte:

$ obrázky podman

Ukázkový výstup:

ID OBRÁZKU ZNAČKY ÚLOŽIŠTĚ VYTVOŘENO SIZEdocker.io/library/ubuntu 20.04 1318b700e415 před 7 dny 75,2 MBdocker.io/redhat/ubi8 nejnovější 0ced1c7c9b23 před 13 dny 24ffc8 nejnovější před MB18dio. před>  

Jak můžete vidět, výše uvedený výstup uvádí název úložiště, kam jsme stáhli obrázky, značku obrázku, ID obrázku, kdy je obrázek vytvořen a velikost obrázku.

Pro ty, kteří by se zajímali, TAG odkazuje na konkrétní snímek obrazu Ubuntu (např. 20.04 a nejnovější). TAG je pouze doplňkový název k místnímu obrázku. ID OBRÁZKU (např. 1318b700e415) je jedinečný identifikátor obrazu Ubuntu.

5. Spustit kontejnery

Kontejner lze spustit pomocí značky obrázku nebo ID obrázku.

Začněme nový kontejner s obrázkem Redhat UBI pomocí jeho tagu:

$ podman run -it ubi8:latest

Tento příkaz vytvoří kontejner Redhat 8 pomocí ubi8:latest image a připojí kontejner k terminálu, abyste s ním mohli pracovat.

Tady,

  • -i : Umožňuje nám vytvořit interaktivní připojení uchopením standardu v (STDIN) kontejneru.
  • -t :Přiřadí nový Pseudo terminál uvnitř kontejneru Redhat 8.
  • ubi8:latest :Kontejner Redhat 8 s TAG „nejnovější“.

Po spuštění kontejneru se automaticky dostanete do shellu kontejneru (příkazový řádek):

Všimli jste si čísla 607a288c810d ve výše uvedeném výstupu? Je to ID kontejneru.

Pozor: Upozorňujeme, že ID kontejneru a ID obrázku Dockeru se liší .

Nyní můžete začít hrát se svým kontejnerem.

Chcete-li se vrátit do terminálu hostitele bez opuštění kontejneru, stiskněte CTRL+p následuje CTRL+q .

Nyní budete odpojeni od kontejneru a vráceni zpět do konzoly hostitelského počítače. Kontejner bude stále spuštěn na pozadí.

Chcete-li opustit kontejner, jednoduše zadejte exit z konzoly kontejneru a stiskněte klávesu ENTER:

# exit

Tento příkaz vypne spuštěný kontejner.

Pokud chcete spustit kontejner s ID IMAGE, jednoduše nahraďte TAG obrázku (ubi8:latest) ID obrázku (0ced1c7c9b23) v předchozím příkazu:

$ podman run -it 0ced1c7c9b23

Tím se spustí kontejner Redhat 8.

6. Spouštějte kontejnery na pozadí

Kontejnery můžete také spouštět na pozadí odděleně.

Ke spuštění kontejneru v odděleném režimu používáme -d příznak:

$ podman run -it -d ubi8:latest

Když spustíme kontejner v odděleném režimu, Podman zobrazí ID kontejneru ve standardním výstupu.

a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29

Ověřte běžící kontejnery pomocí příkazu:

$ podman ps

Nyní kontejner běží na pozadí.

Můžete jej připojit, jak je popsáno v následující části.

7. Připevnění a odpojení od nádob

Jak bylo uvedeno v předchozí části, můžete se bezpečně odpojit od běžícího kontejneru stisknutím CTRL+p následuje CTRL+q . To vám umožní vrátit se zpět do hostitelského terminálu.

Chcete-li se znovu připojit ke kontejneru, nejprve vyhledejte spuštěné ID kontejneru nebo jeho název pomocí podman ps příkaz:

$ podman ps

Ukázkový výstup:

ID OBRÁZKU VYTVOŘENO PŘÍKAZ KONTEJNERU STAV JMÉNA PORTŮ607a288c810d docker.io/redhat/ubi8:latest /bin/bash před 2 hodinami nahoru před 2 hodinami cool_cannon

Zde 607a288c810d je ID kontejneru.

A pak jednoduše zadejte podman attach příkaz následovaný ID kontejneru, jak je uvedeno níže:

$ podman připojte 607a288c810d

Můžete se k němu také připojit pomocí názvu kontejneru, jak je uvedeno níže:

$ podman připojte cool_cannon

Chcete-li se odpojit od kontejneru, jednoduše stiskněte CTRL+p a CTRL+q .

8. Zobrazit běžící kontejnery

Chcete-li najít nebo uvést spuštěné kontejnery, zadejte:

$ podman ps

Ukázkový výstup:

ID KONTEJNERU OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV PORTY NAMESe783c0202b7d docker.io/library/alpine:latest /bin/sh před 37 sekundami Nahoru před 38 sekundami optimistic_murdock

Zobrazí se pouze seznam běžících kontejnerů. Pokud chcete uvést spuštěné i zastavené kontejnery, použijte -a vlajka.

$ podman ps -a

Ukázkový výstup:

ID KONTEJNERU OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV NÁZVY PORTŮ56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash před 3 hodinami Ukončeno (0) před 3 hodinami wizardly_albattanid23672b15cff docker.io/redhat/ubi8:latest /bin/bash před 3 hodinami Ukončeno (0) před 3 hodinami nifty_merkle89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash před 3 hodinami Ukončeno (0) před 2 hodinami xenodochial_euler607a288c810d docker.io/redhat/ubi8:latest /bin/bash před 2 hodinami Ukončeno (0) Asi před minutou cool_cannone783c0202b7d docker.io/library/alpine:latest /bin/sh před 43 sekundami Nahoru před 43 sekundami optimistic_murdock

9. Automaticky odstranit kontejner po jeho zavření

Možná budete chtít otestovat kontejner a jednoduše jej odstranit, jakmile s kontejnerem skončíte. Pokud ano, můžete kontejner po jeho zavření automaticky odstranit pomocí --rm příznak:

$ podman run -it --rm ubi8:latest

Jakmile opustíte kontejner, bude automaticky smazán.

10. Spouštění a zastavování kontejnerů

Jak již bylo řečeno, můžeme vytvořit více kontejnerů pomocí stejného obrázku. To je jedna z největších výhod kontejnerů ve srovnání s fyzickými nebo virtuálními stroji.

K vytvoření více nových kontejnerů můžeme použít podman run jak je popsáno v "5. Spouštění kontejnerů" sekce.

Chcete-li spustit (zapnout) existující kontejner, jednoduše provedeme:

$ podman start 

Podobně můžeme zastavit (vypnout) běžící příkaz příkazem:

$ podman stop 

Dovolte mi ukázat vám příklad, abyste lépe rozuměli.

Nejprve najděte seznam všech kontejnerů:

$ podman ps -a ID KONTEJNERU OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV PORTŮ NÁZVY 56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash před 2 dny Ukončeno (0) před 2 dny wizardly_albattani d23672b15cff docker.io/redhat/ubi8:latest /bin/bash před 2 dny Ukončeno (0) před 2 dny nifty_merkle 89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash před 2 dny Ukončeno (0) před 2 dny xenodochial_euler 607a288c810d docker.io/redhat/ubi8:latest /bin/bash před 2 dny Ukončeno (0) před 2 dny cool_cannon e783c0202b7d docker.io/library/alpine:latest /bin/sh před 2 dny Ukončeno (0) před 2 dny optimistic_murdock 

Názvy kontejnerů jsou uvedeny v NAMES sekce (poslední sloupec) výše uvedeného výstupu.

Chystám se spustit kontejner s názvem wizardly_albattani pomocí příkazu:

$ podman start wizardly_albattani

Pojďme zkontrolovat, zda je spuštěn:

$ podman ps ID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV NÁZVY PORTŮ56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash před 2 dny Nahoru před 7 sekundami wizardly_albattani 

Ano, bylo to před 7 sekundami.

Chcete-li kontejner zastavit, jednoduše proveďte:

$ podman stop wizardly_albattani

11. Přiřadit název kontejnerům

Pokud se podrobně podíváte na výstup předchozích příkazů, Podman přiřadí náhodná jména pokaždé, když spustíte kontejner. Pokud své kontejnery nepojmenujete, Podman je pojmenuje automaticky.

Podívejte se na následující snímek obrazovky. Spustil jsem dvakrát stejný kontejner se stejným obrázkem. Poté, co kontejner opustím a podruhé jej restartuji, dostane nový název, i když jsem použil stejný obrázek.

Kontejnery dostanou nový název pokaždé, když je zavřeme a spustíme pokaždé.

Kontejnerům však můžete přiřadit statický název pomocí --name příznak jako níže:

$ podman run -it -d --name ostechnix_redhat ubi8:latest

Výše uvedený příkaz vytvoří spuštění nového kontejneru v odděleném režimu a pojmenuje jej jako ostechnix_redhat .

Chcete-li zobrazit seznam běžících kontejnerů, provedeme:

$ podman ps

Ukázkový výstup:

ID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV NÁZVY PORTŮ6fa78116dcb7 docker.io/redhat/ubi8:latest /bin/bash před 4 sekundami Nahoru před 5 sekundami ostechnix_redhat 

Všimli jste si názvu kontejneru? Dali jsme vlastní název (tj. ostechnix_redhat ) do kontejneru.

12. Vytvářejte vlastní obrázky

Podman není jen pro stahování a spouštění kontejnerů z předem nakonfigurovaných obrázků. Můžete také vytvořit své vlastní obrázky z existujících obrázků.

Nejprve spusťte existující kontejner nebo spusťte nový.

Chystám se vytvořit nový kontejner Ubuntu:

$ podman run -it 1318b700e415

Nyní jste uvnitř kontejneru.

[e-mail chráněn]:/#

Stačí nainstalovat, upgradovat nebo odebrat jakékoli aplikace v kontejneru.

Pro účely této příručky nainstaluji webový server Apache:

[email protected]:/# aktualizace apt
[email protected]:/# apt install apache2 -y
[email protected]:/# service apache2 start

Až budete hotovi, odpojte se od kontejneru a vraťte se zpět do terminálu hostitele stisknutím CTRL+p a CTRL+q .

Vezměte prosím na vědomí, že kontejner stále běží na pozadí!

Nyní vytvořte obrázek z existujícího kontejneru pomocí příkazu:

$ podman commit b871b0fd5810 ostechnix/ubuntu_apache

Tady,

  • b871b0fd5810 – ID kontejneru Ubuntu.
  • ostechnix – Jméno uživatele, který vytvořil kontejner.
  • ubuntu_apache – Název obrázku vytvořeného uživatelem ostechnix.

Nyní zkontrolujte, zda je nový obrázek vytvořen, seznamem dostupných obrázků:

$ obrázky podman

Ukázkový výstup:

ID OBRÁZKU ZNAČKY REPOSITORY CREATED SIZElocalhost/ostechnix/ubuntu_apache nejnovější 6c9b2fb66400 před 25 sekundami 222 MB docker.io/library/ubuntu 20.04 1318b700e415 před 10 dny 75,2 MBdocker.io/redhat/ubi8 nejnovější 0ced1c7c9b23 před 2 týdny 234 MBdocker.io/library/alpine nejnovější d4ffc> před 5.757 týdny MB 

Jak vidíte na výše uvedeném výstupu, nový obrázek nazvaný ubuntu_apache je vytvořen.

Začněme nový kontejner s tímto obrázkem:

$ podman run -it --rm --name apache_webserver -p 8080:80 localhost/ostechnix/ubuntu_apache

Zde spouštím kontejner s nově vytvořeným obrázkem v předchozím kroku. Také mapuji místní port 8080 na místním systému na port 80 uvnitř kontejneru.

Jakmile je kontejner spuštěn, ujistěte se, že je webový server Apache spuštěn pomocí příkazu:

[email protected]:/# service apache2 start

Nyní otevřete prohlížeč ve svém hostitelském systému a přejděte na http://localhost:8080 pro ověření, zda webový server Apache běží v kontejneru.

13. Zobrazit protokoly kontejnerů

Chcete-li zobrazit vše, co jste dělali uvnitř svého kontejneru, můžete jednoduše zkontrolovat protokoly kontejneru pomocí příkazu:

$ podman zaznamenává apache_webserver

14. Odstraňte nádoby

Ujistěte se, že jsou kontejnery zastaveny:

$ podman stop ostechnix_redhat

Po zastavení kontejneru jej smažte příkazem:

$ podman rm ostechnix_redhat

Podobně odstraňte všechny kontejnery jeden po druhém, jak je uvedeno výše.

Odstraňování více kontejnerů po jednom může být únavný úkol, pokud máte velký počet kontejnerů. Místo mazání jednoho po druhém můžete smazat všechny najednou. Jen buď opatrný! Neexistuje způsob, jak obnovit smazané kontejnery!

Chcete-li odstranit všechny zastavené kontejnery najednou, stačí spustit:

$ podman kontejnerové švestky

Zadejte "Y" potvrďte a stiskněte ENTER klíč k odstranění kontejnerů.

VAROVÁNÍ! Tímto odstraníte všechny neběžící kontejnery. Opravdu chcete pokračovat? [y/N] y 2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e489b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7ed23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0 

15. Odebrat obrázky

Obrázky, které již nepotřebujete, můžete smazat!

Vypište všechny stažené obrázky příkazem:

$ obrázky podman

Ukázkový výstup:

ID OBRÁZKU ZNAČKY ÚLOŽIŠTĚ VYTVOŘENO VELIKOSTlocalhost/ostechnix/ubuntu_apache nejnovější 6c9b2fb66400 před 37 minutami 222 MBdocker.io/library/ubuntu 20,04 1318b700e415 10,28 librioary před 10,28 dny MBdobhatcker před 10,28 dny před 10,22 librioaryd07 /alpine nejnovější d4ff818577bc před 7 týdny 5,87 MB

Nyní odstraňte obrázek pomocí jeho ID obrázku nebo názvu, jako je uvedeno níže:

$ podman rmi 6c9b2fb66400

Ukázkový výstup:

Neoznačeno:localhost/ostechnix/ubuntu_apache:latestSmazáno:6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d

Podobně odstraňte všechny ostatní nepoužité obrázky,

Pozor: Nemůžete smazat obrázek, který je aktuálně používán spuštěnými nebo zastavenými kontejnery.

Závěr

V tomto obsáhlém tutoriálu Podman jsme poskytli 15 praktických příkladů, jak začít s Podmanem v Linuxu. Pokud jste vývojář, učení Podmana je velmi důležité pro pokrok ve vaší kariéře. Naučte se důkladně používat Podman. Stojí to za váš čas!


Linux
  1. Jak začít s cloudovým serverem FreeBSD

  2. Začněte s cloudovými servery

  3. Začněte s Magento na Debianu 10

  1. Začněte s NetworkManagerem v systému Linux

  2. Začněte s Tasksel v Debianu

  3. Začněte s Latexem na Linuxu

  1. 10 způsobů, jak začít s Linuxem

  2. Kurz Istio:Začínáme se základy Istio

  3. Jak začít s Juju?