Jednou z výzev, se kterými se vývojáři v minulosti potýkali, je zajistit, aby aplikace fungovaly spolehlivě ve více výpočetních prostředích. Aplikace často nefungovaly podle očekávání nebo došlo k chybám a úplně selhaly. A právě v tom je koncept kontejnery byl narozen.
Kontejner obrázky jsou statické soubory dodávané se spustitelným kódem, který běží v izolovaném prostředí. Image kontejneru obsahuje systémové knihovny, závislosti a další nastavení platformy, které aplikace potřebuje ke spuštění v různých prostředích.
Red Hat Linux poskytuje sadu užitečných nástrojů pro kontejnery, které můžete využít pro práci přímo s kontejnery Linuxu pomocí požadavku docker příkazy. Tyto zahrnují:
V tomto článku se zaměříme na správu kontejnerů pomocí podman a Skopeo.
The hledání podmana příkaz vám umožňuje prohledávat vybrané vzdálené registry pro obrázky kontejnerů. Výchozí seznam registrů je definován v souboru registries.conf soubor umístěný v souboru /etc/containers/ adresář.
Registry jsou definovány 3 sekcemi.
Jako pravidelný (bez oprávnění root) uživatel spuštěný podman příkaz, můžete definovat svůj vlastní registries.conf soubor ve vašem domovském adresáři ($ HOME/.config/kontejnery/registries.conf) přepsat nastavení celého systému.
Při zadávání registrů mějte na paměti následující:
Chcete -li vyhledat v registru image kontejneru pomocí syntaxe:
# vyhledávací registr podman/kontejner_obraz.
Chcete -li například vyhledat a Redis obrázek v souboru registr.redhat.io registr, vyvolejte příkaz:
# vyhledejte podman registr.redhat.io/redis.
Chcete -li vyhledat a MariaDB běh image kontejneru.
# vyhledejte podman registr.redhat.io/mariadb.
Chcete -li získat podrobný popis obrázku kontejneru, použijte --no-trunc
možnost před názvem image kontejneru z výsledků, které získáte. Pokusíme se například získat podrobný popis obrázku kontejneru MariaDB, jak je uvedeno na obrázku:
# podman search --no-trunc registry.redhat.io/rhel8/mariadb-103.
Pulling or retrieving container images from a remote registry requires that you first authenticate before anything else. Chcete -li například načíst image kontejneru MariaDB, nejprve se přihlaste do registru Redhat:
# přihlášení podmana.
Zadejte své uživatelské jméno a heslo a klikněte na „ENTER‘Na vaší klávesnici. Pokud vše půjde dobře, měli byste dostat potvrzovací zprávu, že přihlášení do registru bylo úspěšné.
Přihlášení proběhlo úspěšně!
Nyní můžete obrázek stáhnout pomocí zobrazené syntaxe:
# podman vytáhnout[: ]/[ /] :
The odkazuje na vzdáleného hostitele nebo registr, který poskytuje úložiště obrazů kontejnerů na TCP. The a společně zadejte image kontejneru na základě v registru. Nakonec, volba určuje verzi image kontejneru. Pokud není zadán žádný, použije se výchozí tag - nejnovější.
Vždy se doporučuje přidat důvěryhodné registry, tedy ty, které poskytují šifrování a nedovolují anonymním uživatelům vytvářet účty s náhodnými názvy.
Chcete -li stáhnout obrázek MariaDB, spusťte příkaz:
# podman vytáhněte registry.redhat.io/rhel8/mariadb-103.
Pro následné stahování obrázků kontejneru není nutné další přihlášení, protože jste již ověřeni. Vytáhnout a Redis image kontejneru, jednoduše spusťte:
# podman vytáhněte registry.redhat.io/rhscl/redis-5-rhel7.
Jakmile dokončíte stahování obrázků, můžete si zobrazit obrázky aktuálně existující na vašem hostiteli spuštěním příkazu obrázky podman.
# obrázky podmana.
Před spuštěním kontejneru je vždy dobré prozkoumat obrázek a porozumět tomu, co dělá. The kontrolovat podman příkaz vytiskne moře metadat o kontejneru, jako je OS a architektura.
Chcete -li zkontrolovat obrázek, spusťte soubor kontrolovat podman za kterým následuje ID obrázku nebo úložiště.
# podman zkontrolovat IMAGE ID. NEBO. # podman prohlédněte REPOZITOR.
V níže uvedeném příkladu kontrolujeme MariaDB kontejner.
# podman zkontrolujte registry.redhat.io/rhel8/mariadb-103.
Chcete -li stáhnout konkrétní metadata pro kontejner, předejte --formát
možnost následovaná metadaty a identitou kontejneru (ID obrázku nebo název).
V níže uvedeném příkladu získáváme informace o architektuře a popisu základního kontejneru RHEL 8, který spadá podŠtítky‘Sekce.
ID obrázku # podman inspect --format = ‘{{.. Labels.architecture}}. ID obrázku # podman inspect --format = ‘{{.. Labels.description}}.
Chcete -li zkontrolovat vzdálený obraz z jiného registru, použijte skopeo zkontrolovat příkaz. V níže uvedeném příkladu kontrolujeme inicializační obrázek RHEL 8 hostovaný na Přístavní dělník.
# skopeo inspect docker: //registry.redhat.io/rhel8-beta/rhel-init.
Jak jste si možná všimli, názvy obrázků jsou obvykle obecné povahy. Například obrázek redis je označen:
registry.redhat.io/rhscl/redis-5-rhel7.
Označování obrázků jim dává intuitivnější název, aby lépe porozuměli tomu, co obsahují. Za použití podman tag příkaz, můžete vytvořit značku obrázku, která je v podstatě aliasem názvu obrázku, který obsahuje různé části.
Tyto jsou:
registr/uživatelské jméno/NÁZEV: tag.
Chcete -li například změnit obecný název obrázku Redis, který má ID 646f2730318c, provedeme příkaz:
# tag podman 646f2730318c myredis.
Chcete -li přidat značku na konec, připojte celou dvojtečku následovanou číslem značky:
# podman tag 646f2730318c myredis: 5.0.
Bez přidání čísla značky bude pouze přiřazen atribut nejnovější.
Ke spuštění kontejneru použijte běh podmana příkaz. Například:
# podman spusťte image_id.
K tichému spuštění kontejneru na pozadí jako služby démona použijte -d
možnost, jak je znázorněno.
# podman run -d image_id.
Chcete -li například spustit soubor redis obrázek s ID 646f2730318c, vyvoláme příkaz:
# podman run -d 646f2730318c.
Pokud používáte kontejner založený na operačním systému, jako je RHEL 8 základní obrázek, můžete získat přístup k shellu pomocí -to
směrnice. The -i
volba vytvoří interaktivní relaci, zatímco -t
vytvoří terminálovou relaci. The --název
volba nastaví název kontejneru na mybash zatímco je ecbc6f53bba0 id obrázku základního obrázku.
# podman run -it --name = mybash ecbc6f53bba0.
Poté můžete spustit libovolné příkazy shellu. V níže uvedeném příkladu ověřujeme verzi kontejneru image operačního systému.
# cat /etc /os-release.
Chcete -li kontejner opustit, jednoduše vyvolejte příkaz exit.
# exit.
Jakmile se kontejner opustí, automaticky se zastaví. Chcete -li kontejner znovu spustit, použijte podman start příkaz pomocí -ai
vlajka podle obrázku.
# podman start -ai mybash.
Opět vám to umožní přístup k shellu.
Chcete -li zobrazit seznam aktuálně spuštěných kontejnerů, použijte podman ps příkaz podle obrázku.
# podman ps.
Chcete -li zobrazit všechny kontejnery včetně těch, které byly po spuštění ukončeny, použijte příkaz:
# podman ps -a.
V této části se zaměřujeme na to, jak lze kontejner nakonfigurovat tak, aby běžel přímo v systému RHEL jako služba systemd.
Nejprve získejte požadovaný obrázek. V tomto případě jsme stáhli Redis obrázek z docker hubu:
# podman vytáhněte docker.io/redis.
Pokud ve vašem systému běží SELinux, musíte aktivovat group_manage_cgroup boolean ke spouštění kontejnerů s systemd.
# setsebool -p container_manage_cgroup zapnuto.
Poté spusťte obrázek kontejneru na pozadí a přiřaďte jej preferovanému názvu obrázku. V tomto příkladu jsme pojmenovali náš obrázek redis_server a zmapoval port 6379 z kontejneru do našeho RHEL 8 hostitel
# podman run -d --name redis_server -p 6379: 6379 redis.
Dále vytvoříme a systemd konfigurační soubor jednotky pro redis v /etc/systemd/system/ adresář.
# vim /etc/systemd/system/redis-container.service.
Vložte níže uvedený obsah do souboru.
[Jednotka] Popis = Redis kontejner [služba] Restartovat = vždy. ExecStart =/usr/bin/podman start -a redis_server. ExecStop =/usr/bin/podman stop -t 2 redis_server [Instalovat] WantedBy = local.target.
Uložte a ukončete soubor.
Dále nakonfigurujte kontejner tak, aby se automaticky spustil při spuštění.
# systemctl povolit redis-container.service.
Dále spusťte kontejner a ověřte jeho běžící stav.
# systemctl start redis-container.service. # systemctl status redis-container.service.
Při spouštění kontejnerů je rozumné konfigurovat trvalé externí úložiště na hostiteli. To poskytuje zálohu pro případ, že kontejner havaruje nebo bude omylem odstraněn.
Abychom zachovali data, chystáme se namapovat adresář umístěný v hostiteli na adresář uvnitř kontejneru.
$ podman run --privileged -it -v/var/lib/containers/backup_storage:/mnt registry.redhat.io/ubi8/ubi/bin/bash.
The --výsadní
volba je předána, když SELinux je nastaveno na vynucování. The -proti
volba určuje externí svazek, který je umístěn na hostiteli. Objem kontejneru zde je /mnt adresář.
Jakmile přistoupíme k shellu, vytvoříme ukázkový soubor testování.txt v /mnt adresář podle obrázku.
$ echo "Toto testuje trvalé externí úložiště"> /mnt/testing.txt.
Pak budeme výstup kontejner a zkontrolujte, zda soubor existuje v externím úložišti umístěném na hostiteli
# exit. # kočka /var/lib/containers/backup_storage/testing.txt.
Výstup ⇒ Toto testuje trvalé externí úložiště.
Jakmile svůj kontejner spustíte, můžete jej zastavit pomocí podman zastávka následovaný příkazem ID kontejneru které můžete získat z podman ps příkaz.
# podman stop ID kontejneru.
Chcete -li odstranit kontejnery, které již nepotřebujete, nejprve se ujistěte, že jste jej zastavili, a poté vyvolejte podman rm za ním následuje příkaz nebo ID kontejneru.
# podman rm ID kontejneru.
Chcete -li odebrat více kontejnerů najednou, zadejte kontejner ID oddělené mezerou.
# podman rm container-id-1 container-id-2 container-id-3.
Chcete -li vymazat všechny své kontejnery, spusťte příkaz:
# podman rm -a.
Chcete-li odebrat obrázek, nejprve zajistěte, aby byly všechny kontejnery z obrázků zastaveny a odstraněny, jak je popsáno v předchozím podtématu.
Dále pokračujte a spusťte podmana -rmi
příkaz následovaný ID obrázku, jak je uvedeno:
# podman -rmi image -id.
Tím je shrnuta tato kapitola o správě a práci s kontejnery v RHEL 8. Doufáme, že tato příručka poskytla slušné znalosti o kontejnerech a o tom, jak je můžete na svém zařízení vzájemně ovlivňovat a spravovat RHEL systém pomocí podman a Skopeo.