Container-Vir­tua­li­sie­rung hat in den ver­gan­ge­nen Jahren an Bedeutung gewonnen. Ins­be­son­de­re durch das 2013 er­schie­ne­ne Docker populär geworden, ist die Tech­no­lo­gie mitt­ler­wei­le Grund­kom­po­nen­te diverser Tools für die An­steue­rung vir­tu­el­ler Name­spaces (dt. „Na­mens­räu­me“). Eine der in­ter­es­san­tes­ten Lösungen ist Podman: Ur­sprüng­lich als Debugging-Tool für CRI-O kon­zi­piert, das die Arbeit mit Ku­ber­netes-Clustern einfacher gestalten sollte, hat sich die Software schnell zu einer ei­gen­stän­di­gen, um­fang­rei­chen Engine für das Ma­nage­ment von Con­tai­nern ent­wi­ckelt.

Hinweis

Name­spaces bzw. Na­mens­räu­me er­mög­li­chen es, aus­ge­wähl­te Elemente eines Codes (z. B. Klassen) in einem Container zu grup­pie­ren.

Was Podman so besonders macht und wie sich das Container-Werkzeug für die eigenen Zwecke nutzen lässt, erfahren Sie im Folgenden.

Was ist Podman?

Podman (Abkürzung für: Pod-Manager) ist eine Container-Engine, die erstmals im Februar 2018 ver­öf­fent­licht wurde. Ent­wick­ler ist die ame­ri­ka­ni­sche Software-Schmiede Red Hat, die vor allem durch leis­tungs­star­ke En­ter­pri­se-Lösungen für ver­schie­dens­te Open-Source-Projekte wie Red Hat En­ter­pri­se Linux (RHEL) oder OpenStack bekannt ist. Auf den Er­fah­run­gen von Docker aufbauend, war Podman ur­sprüng­lich aber gar nicht als ei­gen­stän­di­ge Engine, sondern als einfaches Debugging-Tool für CRI-O geplant – ein Plan, der schnell wieder verworfen wurde.

Die Container-Software ähnelt Docker in vielen Punkten und verwendet bei­spiels­wei­se denselben Kom­man­do­zei­len-In­ter­pre­ter wie der In­dus­trie­stan­dard. Das macht es sogar möglich, typische Docker-Befehle in Podman zu nutzen – hierfür muss lediglich der Alias alias docker=podman gesetzt werden. Dem­entspre­chend ist ein Umstieg von Docker auf Podman in den meisten Fällen relativ un­kom­pli­ziert. Die ent­schei­den­de Neuerung, die Podman mit sich bringt, ist der Verzicht auf einen zentralen Daemon als Steue­rungs­in­stanz für die einzelnen Container. Dies gibt Ihnen die Mög­lich­keit, auch ohne Root-Rechte auf die ver­schie­de­nen vir­tua­li­sier­ten An­wen­dun­gen zu­zu­grei­fen.

Hinweis

Als Daemon be­zeich­net man in Unix/Linux-Be­triebs­sys­te­men ein Programm, das im Hin­ter­grund aus­ge­führt wird und bestimmte Dienste und Prozesse zur Verfügung stellt.

Podman läuft auf allen gängigen Linux-Dis­tri­bu­tio­nen wie Ubuntu, Fedora, CentOS, Debian und RHEL sowie auf Raspbian (Raspberry-Pi-Be­triebs­sys­tem). Dabei lässt sich die Engine in den meisten Fällen direkt über die Pa­ket­ver­wal­tung des je­wei­li­gen Systems in­stal­lie­ren.

Aufbau und Funk­ti­ons­wei­se von Podman

Zu­sätz­lich zu dem Verzicht auf einen zentralen Daemon zählen die so­ge­nann­ten Pods zu den ent­schei­den­den Aus­zeich­nungs­merk­ma­len von Podman. Bei diesen Pods, die dem Konzept von Ku­ber­netes Pods nach­emp­fun­den sind, handelt es sich um Zu­sam­men­schlüs­se mehrerer Container innerhalb eines ge­mein­sa­men Linux-Na­mens­raums, die sich bestimmte Res­sour­cen teilen. Auf diese Weise lassen sich ver­schie­dens­te vir­tua­li­sier­te An­wen­dun­gen flexibel mit­ein­an­der kom­bi­nie­ren.

Wie zuvor erwähnt, gelingt das Ausführen der einzelnen Container auf dem Host als ge­wöhn­li­cher Nutzer ohne Root-Rechte – nur innerhalb eines Con­tai­ners laufen die Prozesse root­ge­steu­ert. Um dies zu er­mög­li­chen, greift Podman auf die User-Name­spaces des Linux-Kernels zurück, die den Prozessen spezielle Rechte und Nutzer-IDs zuweisen. Dass die Container in Wirk­lich­keit aber als Ad­mi­nis­tra­tor aus­ge­führt werden, verleiht der vir­tua­li­sier­ten Podman-Umgebung einen hohen Si­cher­heits­stan­dard.

Den Kern eines Pods bilden so­ge­nann­te Infra-Container, die aus­schließ­lich für die Funk­tio­na­li­tät des Zu­sam­men­schlus­ses ver­ant­wort­lich sind und zu diesem Zweck die einzelnen Res­sour­cen wie Name­spaces, Netzwerk-Ports, CPU, Ar­beits­spei­cher etc. verwalten und ge­währ­leis­ten. Ferner setzt Podman beim Pod-Ma­nage­ment auf das in C ge­schrie­be­ne Mo­ni­to­ring-Tool Conmon, das die einzelnen vir­tua­li­sier­ten Kom­po­nen­ten überwacht und bei­spiels­wei­se Logs sichert. Zudem fungiert das Werkzeug als Schnitt­stel­le zum Terminal des je­wei­li­gen Con­tai­ners. Als Laufzeit für die Container verwendet Podman die Software runC, die auch in vielen anderen Lösungen wie Docker oder rkt zum Einsatz kommt.

Podman-Tutorial: Die ersten Schritte mit Podman

Nachdem wir die grund­le­gen­den Ei­gen­schaf­ten von Podman vor­ge­stellt haben, fassen wir im nach­fol­gen­den Podman-Tutorial die wich­tigs­ten Punkte für den Einstieg in die Arbeit mit der Container-Engine zusammen.

Podman in­stal­lie­ren unter Linux

Podman ist eine Software zur Aus­füh­rung von Linux-Con­tai­nern. Auf Linux-Dis­tri­bu­tio­nen wie CentOS, Ubuntu, Debian und Co. ist das Tool ebenso leicht wie schnell in­stal­liert: In den meisten Fällen sind die In­stal­la­ti­ons­pa­ke­te direkt in der Pa­ket­ver­wal­tung der je­wei­li­gen Sys­tem­soft­ware zu finden und mithilfe der sys­tem­ty­pi­schen Terminal-Befehle in­stal­liert.

Hinweis

Als Al­ter­na­ti­ve zu den nativen Paketen im System-Re­po­si­to­ry stellt das Kubic-Projekt auf opensuse.org ver­schie­de­ne Podman-In­stal­la­ti­ons­pa­ke­te für diverse Dis­tri­bu­tio­nen und Releases zur Verfügung.

Debian, Ubuntu, Raspbian:

sudo apt-get update -qq
sudo apt-get -qq -y install podman

Fedora, CentOS, Amazon Linux 2, RHEL 7:

sudo yum -y install podman

OpenSUSE:

sudo zipper install podman

Podman in­stal­lie­ren unter Windows und macOS

Podman ist in Linux-Um­ge­bun­gen zuhause. Sie können die Container-Engine aber auch auf Geräten nutzen, die Windows oder macOS als Be­triebs­sys­tem verwenden. Vor­aus­set­zung hierfür ist, dass Sie von diesen Geräten aus Zugriff auf eine Linux-In­stal­la­ti­on haben, die entweder innerhalb einer vir­tu­el­len Maschine auf dem Host läuft oder über das Netzwerk zu­gäng­lich ist.

Falls Sie über eine solche Zu­griffs­mög­lich­keit verfügen, benötigen Sie lediglich einen Podman-Remote-Client, mit dem Sie eine SSH-Ver­bin­dung zum Podman-Backend aufbauen können.

Hinweis

Die Ver­bin­dungs­in­for­ma­tio­nen für die SSH-Ver­bin­dung sind in der Kon­fi­gu­ra­ti­ons­da­tei podman-remote.conf ein­zu­tra­gen. Aus­führ­li­che In­for­ma­tio­nen über die Ein­rich­tung und Nutzung liefert folgendes Podman-Remote-Client-Tutorial auf GitHub.

So funk­tio­niert das Container-Image-Ma­nage­ment mit Podman

Podman ori­en­tiert sich in Bezug auf Features und Syntax vorrangig an Docker, weshalb Sie bei der Ein­rich­tung der ge­wünsch­ten Container auf den großen Fundus aus ein­satz­fer­ti­gen Docker-Images zu­rück­grei­fen können, der auch als Docker Hub bekannt ist. Mithilfe des pull-Kommandos können Sie von dort beliebige An­wen­dungs-Images her­un­ter­la­den, z. B. die neueste Version von Ubuntu:

podman pull hub.docker.com/_/ubuntu:latest

Der of­fi­zi­el­le Spei­cher­pfad für die einzelnen Images ist der lokale Pfad /.local/share/con­tai­ners/, wobei jeder Nutzer seinen eigenen Na­mens­raum besitzt, sodass das eigene Container-Setup bei­spiels­wei­se vom Root-Setup getrennt ist. Einen Überblick über die lokal ge­spei­cher­ten Images erhalten Sie mit folgendem Befehl:

podman images

Für eine Auf­lis­tung der Root-Images ist das Linux-typische Kommando „sudo“ vor­an­zu­stel­len:

sudo podman images
Zum Hauptmenü