
Podman, vyvinutý společností RedHat, je bezplatný kontejnerový engine bez démonů s otevřeným zdrojovým kódem navržený jako náhrada za populární runtime modul Docker. Stejně jako Docker usnadňuje vytváření, spouštění, nasazování a sdílení aplikací pomocí obrázků kontejnerů a kontejnerů OCI ( Open Container Initiative ). Podman používá uživatelské a síťové jmenné prostory a Ve srovnání s Dockerem je Podman považován za izolovanější a bezpečnější. Většina příkazů v Dockeru bude fungovat v Podmanu. a tak pokud jste obeznámeni se spouštěním příkazů Dockeru, používání podman bude hračka.
V této příručce se naučíme, jak nainstalovat podman na Debian 11 Bullseye.
Nainstalujte Podman na Debian 11
Balíčky, knihovny a závislosti podman jsou již hostovány v oficiálních repozitářích Debianu. Proto můžete snadno nainstalovat podman pomocí správce balíčků APT.
Nejprve aktualizujte seznamy balíčků:
$ sudo apt update
Dále nainstalujte kontejnerový engine podman následovně:
$ sudo apt install podman
Až budete vyzváni k pokračování, napište 'Y' a stiskněte ENTER.
Chcete-li ověřit nainstalovanou verzi Podman, spusťte:
$ podman --version

Chcete-li získat další podrobnosti o kontejnerovém enginu podman, spusťte příkaz:
$ sudo podman info
Měli byste vidět záplavu výstupu se složitými detaily, jako jsou ty, které máme níže.

Nakonfigurujte registry Podman
Soubor registru registry.conf
je konfigurační soubor, který určuje registry kontejnerů, které se mají použít, kdykoli chcete odeslat nebo stáhnout obraz. Úplná cesta k souboru je /etc/containers/registries.conf
. Existují různé registry kontejnerů, včetně centra Docker, Quay.io, RedHat a mnoha dalších.
Soubor můžete zobrazit pomocí textového editoru, jak je uvedeno
# sudo /etc/containers/registries.conf
V Dockeru je jediným registrem kontejnerů Docker Hub. Podman nabízí uživatelům větší svobodu vyhledávání a stahování obrázků z libovolného registru. Seznam registrů kontejnerů můžete definovat přidáním následujícího řádku.
unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']
Při spuštění podman search
nebo podman pull
podman bude kontaktovat tyto registry počínaje prvním v tomto pořadí. Uložte změny a ukončete soubor.
Vyhledávání obrázků
Před stažením obrázků kontejnerů je rozumné vyhledat jejich dostupnost v různých registrech.
Například
$ sudo podman search nginx

Výstup vám nabídne množství informací včetně názvu registru, názvu obrázku a stručného popisu.
Přihlášení do registru
Než začnete stahovat nebo vkládat obrázky, musíte se přihlásit do registru. V níže uvedeném příkladu se přihlašuji ke svému účtu Redhat, který mi ve skutečnosti umožňuje přístup do registru.
$ sudo podman login registry.access.redhat.com

Chcete-li se odhlásit z registru, spusťte příkaz:
$ sudo podman logout registry.access.redhat.com
Vytažení obrázku
Chcete-li stáhnout obrázek, použijte syntaxi:
$ sudo podman pull image_name
Chcete-li například stáhnout oficiální obrázky sestavení Nginx, spusťte příkaz:
$ sudo podman pull docker.io/library/nginx

Zkusme vytáhnout jiný obrázek. Obrázek Official MongoDB vytáhneme následovně.
$ sudo podman pull docker.io/library/mongo

Výpis obrázku
Chcete-li zobrazit všechny obrázky, zadejte příkaz.
$ sudo podman images

Vytvořte kontejner z obrázku
Nyní, když máme naše obrazy umístěné v systému Debian, můžeme spustit kontejner pomocí zobrazené syntaxe. Volba -d spustí kontejner na pozadí a --name
volba určuje vlastní název kontejneru
$ sudo podman run -d --name container_name image
Chcete-li například spustit na pozadí kontejner s názvem webserv1 z obrázku Nginx, spusťte příkaz:
$ sudo podman run -d --name webserv1 docker.io/library/nginx
Ze stejného obrázku můžete spustit více kontejnerů. Spusťte další kontejner s názvem webserv2 ze stejného obrazu Nginx.
$ sudo podman run -d --name webserv2 docker.io/library/nginx

Výpis kontejnerů
V této části se podíváme na různé příkazy, které můžete použít s kontejnery.
Chcete-li zkontrolovat kontejnery, které jsou aktuálně spuštěny, zadejte příkaz:
$ sudo podman ps
Výstup je prezentován ve sloupcích, které poskytují informace, jako je ID kontejneru, název OBRÁZKU, příkaz spouštějící kontejner, datum vytvoření a stav.

Chcete-li zobrazit seznam všech kontejnerů včetně těch, které byly ukončeny, spusťte:
$ sudo podman ps -a
Zastavení kontejneru
Chcete-li zastavit kontejner, použijte syntaxi
$ sudo podman stop CONTAINER_ID
NEBO
$ sudo podman stop container_name
V příkladu níže jsem zastavil první kontejner uvedený pomocí jeho ID kontejneru
$ sudo podman stop 9daeaabdfdfc
Zastavení kontejneru můžete ověřit pomocí podman ps
příkaz. Jasně vidíme, že po zastavení obrázku máme spuštěný pouze 1 obrázek.

podman ps -a
příkaz vypíše oba kontejnery, které obsahují kontejner, který byl právě zastaven.
$ sudo podman ps -a

Spuštění kontejneru
Ke spuštění kontejneru použijte syntaxi:
$ sudo podman start CONTAINER_ID
NEBO
$ sudo podman start container_name
Chcete-li například spustit webserv1, spusťte:
$ sudo podman start webserv1

Přístup k plášti kontejneru
Přístup k shellu kontejneru je nejlépe demonstrován kontejnerem operačního systému.
Zde si stáhneme nebo vytáhneme obrázek Ubuntu:
$ sudo podman pull docker.io/library/ubuntu
Z obrázku vytvoříme nebo spustíme kontejner a získáme přístup do shellu pomocí -it
možnost.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash

- -i, –interactive Ponechá STDIN otevřený, i když není připojen
- -t, –tty Přiděluje pseudo-TTY. Výchozí hodnota je false
Zkontrolujte protokoly kontejneru
Chcete-li zkontrolovat protokoly kontejneru, použijte syntaxi:
$ sudo podman logs container_name
Například:
$ sudo podman logs webserv2

Zobrazit statistiky kontejneru
Chcete-li zobrazit statistiky všech běžících kontejnerů, spusťte:
$ sudo podman stats

Kontrola kontejneru
Chcete-li vytisknout složité podrobnosti o kontejneru, použijte možnost kontroly:
$ sudo podman inspect webserv2
Tím se vytiskne dlouhý výstup ve formátu JSON.

K filtrování výstupu použijte volbu --format. Například k vytištění IP adresy běhu kontejneru webserv2
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
Poté můžete zadat další informace o IP, například pomocí curl k načtení hlaviček HTTP.
$ curl -I ip-address

Odstranění kontejneru
Chcete-li kontejner úplně odstranit nebo odstranit, nejprve jej zastavte, pokud běží, a nakonec jej vyjměte. V tomto příkladu jsme zastavili a odstranili kontejner websev1.
$ sudo podman stop webserv1
Poté vyjměte zastavenou nádobu.
$ sudo podman rm webserv1

Odstranění obrázku
Chcete-li odstranit obrázek, nejprve se ujistěte, že jste zastavili a odstranili všechny kontejnery, které byly z obrázku spuštěny. Dále použijte rmi
možnost, jak je uvedeno.
$ sudo podman rmi image_name
Chcete-li například odebrat obrázek ubuntu, spusťte příkaz:
$ sudo podman rmi docker.io/library/ubuntu

Nainstalujte nejnovější verzi Podman – kompilace ze zdroje
Nejnovější verzi Podmana můžete otestovat instalací vývojové verze ze zdroje.
01. Vytvářejte a spouštějte závislosti
sudo apt-get install \
btrfs-progs \
git \
golang-go \
go-md2man \
iptables \
libassuan-dev \
libbtrfs-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libseccomp-dev \
libselinux1-dev \
libsystemd-dev \
pkg-config \
runc \
make \
libapparmor-dev \
gcc \
cmake \
uidmap \
libostree-dev
02. Nainstalujte Conmon
Společným prvkem je monitor kontejneru, což je malý program v jazyce C, jehož úkolem je sledovat primární proces kontejneru.
git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon /usr/local/bin/
03. Nainstalujte runc
Chcete-li nainstalovat nejnovější verzi runc
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc
03. Nainstalujte rozhraní CNI (Container Network Interface)
Plugin CNI se používá k vložení síťového rozhraní do jmenného prostoru kontejnerové sítě.
git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni
Nastavte síť
sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf
Přidejte konfiguraci
sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
04. Nainstalujte Podman ze zdroje
git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev
Závěr
Doufáme, že jsme vám poskytli pevný základ na vaší cestě k tomu, abyste se stali lepšími profesionály v používání podmanů k vytváření a správě kontejnerů. Tento průvodce vás provede instalací podman na Debian 11 Buster.