Webanwendungen erfordern meist mehrere Systempakete, etwa einen Webserver, PHP und ein Datenbanksystem. Teilweise werden bestimmte Softwareversionen vorausgesetzt, die für LTS-Distributionen (Long Term Support) wie Ubuntu 24.04 oder Linux Mint 22.1 nicht immer verfügbar sind. Bei der Installation in einem Container läuft eine Webanwendung größtenteils unabhängig vom System und mit eigenen Programmen und Bibliotheken in einer abgeschotteten Umgebung.
Dieser Artikel stellt die Docker-Alternative Podman vor. Podman ist zu Docker weitestgehend kompatibel, gilt aber als sicherer. Wir zeigen die Einrichtung der aktuellen Podman-Version unter Ubuntu 24.04 oder Linux Mint 22.1 und wie Sie das Tool für interessante Webanwendungen nutzen können. Der Schwerpunkt liegt bei der Konfiguration für den eigenen Rechner oder das lokale Netzwerk. Wer darüber hinaus Dienste aus dem Internet erreichen möchte, findet Anleitungen dafür über https://m6u.de/HOMSER.
Service: Befehlszeilen und Beispieldateien zu diesem Artikel können Sie über https://m6u.de/PODMA abrufen.
Dienste und Anwendungen im Container
Anwendungen, die unter der Kontrolle von Podman laufen, sind mit Virtualisierungslösungen wie Virtualbox, KVM/Qemu oder Vmware vergleichbar. Statt eines kompletten Betriebssystems virtualisiert Podman jedoch nur Teile davon. Ein aufwendiger Hypervisor ist nicht erforderlich und Podman setzt direkt auf dem Linux-Kernel auf. Das sorgt für mehr Leistung.
Ein weiterer Pluspunkt: Podman benötigt kein vollständiges Gastbetriebssystem. Das Tool nutzt minimale Systemimages, die bei https://hub.docker.com verfügbar sind. Zum Start eines Containers kann Podman einfach das gewünschte Gastsystem herunterladen. Das Image ist schreibgeschützt und dient als Vorlage für Container, in denen sich die gewünschte Software konfigurieren lässt.
Es gibt aber auch Einschränkungen, die durch das Konzept bedingt sind: Die Technik eignet sich nicht zur Vollvirtualisierung von Betriebssystemen, da Podman-Container immer den Linux-Kernel des Hostsystems benutzen. Über Container lässt sich standardmäßig auch keine grafische Oberfläche starten. Der Zugriff erfolgt über den Webbrowser oder Programme für die Fernwartung. Es ist jedoch andererseits möglich, sogar Windows über einen Container zu starten.
Podman unter Linux installieren
Podman ist in den Standard-Paketquellen enthalten, aber nur in einer sehr alten Version, die nicht alle Funktionen bietet. Podman wurde von Red Hat entwickelt und dort scheint kein Interesse zu bestehen, Systempakete für Ubuntu bereitzustellen. Aktuellere Versionen gibt es für Fedora oder Cent-OS Stream. Nutzer von Ubuntu und Linux Mint können jedoch die Binärdateien von https://github.com/mgoltzsche/podman-static verwenden. Laden Sie unter „Releases“ die Datei „podman-linux-amd64.tar.gz“ herunter. Im Terminal entpacken Sie die Datei im Downloadverzeichnis und kopieren den Inhalt nach „/usr/local“ (drei Zeilen):
cd ~/Downloads
tar -xzf podman-linux-amd64.tar.gz
sudo cp -r podman-linux-amd64/usr podman-linux-amd64/etc /
Da wir Podman aus Sicherheitsgründen ohne erhöhte Rechte („rootless“) verwenden wollen, öffnen Sie die Konfiguration mit
sudo nano /etc/containers/storage.conf
im Editor Nano und entfernen das Kommentarzeichen („#“) dieser Zeile:
rootless_storage_path = "$HOME/.local/share/containers/storage"
Podman speichert alle Daten im angegebenen Ordner in Ihrem Home-Verzeichnis.

Einige Anwendungen benötigen für die Kommunikation mit Podman einen Linux-Socket. Damit er nach der Anmeldung bereitsteht, aktivieren und starten Sie den zugehörigen Dienst mit (zwei Zeilen)
systemctl --user enable
podman.service
systemctl --user start
podman.service
Wenn Container automatisch beim Linux-Start ohne vorherige Benutzeranmeldung starten sollen, verwenden Sie die folgenden drei Befehle:
systemctl --user enable
podman-restart.service
systemctl --user start
podman-restart.service
sudo loginctl enable-linger [User]
Den Platzhalter „[User]“ ersetzen Sie durch Ihren eigenen Kontonamen. Lassen Sie die letzte Zeile weg, wenn der automatische Start nach der Anmeldung ausreicht.
Optionale Ergänzung: Webanwendungen in Containern benötigen einen Port, damit sie sich im Browser aufrufen lassen. Webserver verwenden standardmäßig den Port 80, wenn Sie eine URL wie „http://localhost“ oder im lokalen Netzwerk mit „http://[MeinRechner]“ aufrufen. Sollen mehrere Webanwendungen laufen, verwenden Sie jeweils einen anderen Port, beispielsweise „8080“, „8081“ und so weiter. Den Port hängen Sie an die URL an: „http://localhost:8080“. Wer grundsätzlich mit den höheren Ports auskommt, muss nichts ändern. Ports kleiner als 1024 darf Podman nicht verwenden, weil dafür höhere Rechte erforderlich sind. Sie können das ändern, indem Sie die Zeile
net.ipv4.ip_unprivileged_port_start=80
in die Datei „/etc/sysctl.conf“ eintragen und die Konfiguration mit
sudo sysctl -p
aktualisieren.
Erste Schritte mit Podman
Für einen ersten Test erstellen und starten Sie einen Container mit Ubuntu:
podman run -t -i ubuntu bash
Sie werden nach dem Repositorium gefragt, aus dem das Image heruntergeladen werden soll. Bestätigen Sie den ersten Eintrag „docker.io/library/ubuntu:latest“ mit der Eingabetaste. „-t“ emuliert ein Terminal für Bash und „-i“ ermöglicht dessen interaktive Nutzung. Podman lädt automatisch ein minimales Image von Ubuntu herunter (80 MB) und startet die Bash-Shell in der isolierten Umgebung. Sie erkennen das am Prompt, der jetzt beispielsweise „root@b2fce5f48763“ lautet. Im Ubuntu-Container arbeiten Sie als Benutzer „root“, auch wenn Sie ihn nicht mit erhöhten Rechten erzeugt haben. Die Befehlszeile
apt update && apt install mc
richtet den Terminal-Dateimanager Midnight Commander ein. Mit
exit
beenden Sie die Shell und schließen den Container.
Wenn Sie ein anderes System nutzen wollen, ersetzen Sie „ubuntu“ beispielsweise durch „debian“ oder „fedora“. Eine durchsuchbare Datenbank mit allen verfügbaren Systemen und Anwendungen gibt es unter https://hub.docker.com. Viele Images enthalten bereits Software, etwa die Datenbank My SQL oder das Content-Management-System WordPress. Meist benötigen diese eine spezielle Konfiguration oder arbeiten mit anderen Images zusammen. Die Images lädt Podman nur einmal herunter und Sie können auf deren Basis mehrere unterschiedliche Container erstellen.
Wichtige Befehle: Welche Container aktuell laufen, erfahren Sie über den Befehl
podman ps
Wenn Sie einen interaktiven Container („run -i“) mit „exit“ verlassen, wird er gestoppt. Mit
podman ps -a
erhalten Sie eine Übersicht mit allen vorhandenen Containern. In der Ausgabe sehen Sie auch den zuvor erstellten und jetzt inaktiven Ubuntu-Container „docker.io/library/ubuntu:latest“ sowie dessen ID. Mit
podman start -i -a [Container-ID]
starten Sie den Container wieder und sehen den Prompt des Systems. Sie können jetzt die dort installierte Software wie etwa den Midnight Commander starten.
Einen Container erstellt Podman als Overlay der zugehörigen Imagedatei. Er enthält nur die neu hinzugekommenen Dateien. Wie viel Platz die Container belegen, erfahren Sie mit
podman system df -v
Nicht mehr benötigte Container stoppen Sie zuerst, danach lassen Sie sich entfernen:
podman stop [Container-ID]
podman rm [Container-ID]
Welche Images vorhanden sind, zeigt dieser Befehl
podman images
und nicht mehr verwendete Images löschen Sie so:
podman rmi [Image-ID]
Eine Übersicht über viele weitere Befehle erhalten Sie, indem Sie Podman einfach ohne Parameter aufrufen. Eine Hilfe zu einzelnen Optionen liefert diese Syntax:
podman run --help
Tipp: Podman-Desktop (https://podman-desktop.io) ist eine grafische Oberfläche für Podman. Sie deckt nicht alle Podman-Funktionen ab, aber Sie können damit Container stoppen, starten, löschen und Images entfernen. Für die Installation steht ein Flatpak-Paket bereit. Oder Sie klicken im Downloadbereich auf „AMD64 binary (tar.gz)“, laden die Datei herunter und starten aus dem entpackten Archiv „podman-desktop“.

Neue Anwendungen bequem einrichten
Außer für spezielle Zwecke installiert man Anwendungen in Containern in der Regel nicht selbst. Auf https://hub.docker.com finden Sie vorbereitete Imagedateien für fast alle populären Webanwendungen. Als Beispiel verwenden wir Dokuwiki, das sich für ein privates Wiki zum Sammeln von Informationen eignet. Sie installieren Dokuwiki mit
podman run -p 8080:8080 --name dokuwiki --restart "always" -v dokuwiki:/storage dokuwiki/dokuwiki:stable
Das Terminal zeigt den Fortschritt der Installation und danach die Logmeldungen des Containers. Das Image enthält zurzeit den Webserver Apache 2.4.62 und PHP 8.3.23. „-p 8080:8080“ bedeutet, dass der Webserver außerhalb des Containers über den Port 8080 (erster Wert) erreichbar ist („http://localhost:8080)“. Intern verwendet der Container ebenfalls 8080. Verwenden Sie „-p 80:8080“, wenn Sie den Standardport wünschen. Beachten Sie die Hinweise dazu im Punkt „Podman unter Linux installieren“. Hinter „–name“ steht die Bezeichnung des Containers und „–restart „always““ sorgt dafür, dass der Container automatisch über den Dienst podman-restart.service nach einem Systemstart aktiviert wird.

Hinter „-v“ ist das Speichervolumen festgelegt. Bei diesem Beispiel erstellt Podman den Ordner „~/.local/share/containers/storage/volumes/dokuwiki“, in dem das Wiki seine Daten speichert. Das Verzeichnis bleibt erhalten, auch wenn Sie den Dokuwiki-Container löschen. Erstellen Sie trotzdem regelmäßig Backups, damit keine Inhalte verloren gehen. Allerdings verwendet Podman zufällige Benutzer- und Gruppen-IDs für die Unterordner, sodass ein Backup nur mit root-Rechten möglich ist. Die im nächsten Punkt verwendete Konfigurationsdatei bietet dafür eine Lösung.
Ein mit „podman run“ gestarteter Container bleibt im Terminal aktiv, bis Sie ihn mit Strg-C abbrechen und den Container damit stoppen. Um den Container zu starten, verwenden Sie für dieses Beispiel
podman start dokuwiki
Allgemein können Sie auch die Container-ID verwenden, die Sie mit „podman ps -a“ ermitteln.
Hinweis: Der erneute Start von „podman run“, etwa mit geänderten Optionen, schlägt fehl, wenn der Container bereits vorhanden ist. Verwenden Sie die Option „–replace“, um den Container zu ersetzen.
Anwendung mit Podman-Compose erstellen
Eine weitere Installationsmethode verwendet Konfigurationsdateien („compose“) für die Einrichtung von Containern. Das ist übersichtlicher als die Nutzung von „podman run“ und vor allem für komplexere Webanwendungen zu empfehlen, die mehrere Imagedateien und Container verwenden. Damit sich Compose-Dateien nutzen lassen, installieren Sie zuerst ein Paket:
sudo apt install --no-install-recommends podman-compose
„podman-compose“ ist ein Python-Script, das Anweisungen aus einer Compose-Datei mit Podman-Befehlen umsetzt. Als erstes Beispiel verwenden wir wieder Dokuwiki. Laden Sie die Beispieldatei „dokuwiki-podman-local.yaml“ herunter (https://m6u.de/PODMA) und speichern Sie sie im Ordner „~/Podman“. Öffnen Sie die Datei in einem Texteditor und passen Sie alle IDs an. „1000“ bezieht sich auf den ersten Benutzer, den Sie bei der Linux-Installation angelegt haben. Falls Sie ein anderes Systemkonto verwenden, ermitteln Sie die ID Ihres Kontos mit dem Befehl
id
und setzen diese ID überall statt „1000“ ein. Sie erhalten damit volle Zugriffsrechte auf den Ordner „~/dokuwiki“. Achten Sie bei Änderungen in der YAML-Datei auf die korrekten Einzüge mit Leerzeichen.
Im Downloadordner starten Sie dann diesen Befehl:
podman compose -f dokuwiki-podman-local.yaml up
Das Ergebnis ist identisch mit dem von „podman run“. Sie sehen die Meldungen im Terminal und stoppen den Container mit Strg-C. Da in der Compose-Datei „restart: always“ angegeben ist, können Sie den Container alternativ mit
systemctl --user restart
podman-restart.service
aktivieren.

Weitere Beispiele für Compose-Dateien
Vor dem Einsatz der nachfolgenden Podman-Container bearbeiten Sie alle YAML-Dateien von https://m6u.de/PODMA im Editor und passen die Optionen an. Eine Hilfestellung entnehmen Sie den Kommentaren. Richten Sie die Anwendungen dann mit „podman compose“ ein, wie zuvor für Dokuwiki beschrieben.
Audiobookshelf (www.audiobookshelf.org) stellt einen Server für gesprochene Audioinhalte im Netzwerk bereit. Außerdem kann die Software E-Books ausliefern, die sich auch auf dem Smartphone lesen lassen.
WordPress (https://wordpress.org) ist die mit Abstand beliebteste Blogsoftware im Internet. Für das lokale Netzwerk ist das CMS (Content-Management-System) vielleicht etwas zu mächtig, eine Installation kann aber sinnvoll sein, wenn man Erfahrungen damit sammeln möchte.
Paperless-ngx (https://docs.paperless-ngx.com) ist eine Software zur Ablage und Verwaltung digitalisierter Dokumente. Die Webanwendung unterstützt gängige Dokumenttypen wie PDFs und Word, Excel sowie Libre-Office-Dateien, die Sie mit Tags versehen und damit organisieren können. Der Inhalt der Dokumente lässt sich durchsuchen und filtern.
Immich (https://immich.app) verwaltet für Sie Fotos und Videos bequem über eine Weboberfläche. In Kombination mit einer Smartphone-App eignet sich Immich auf dem eigenen PC hervorragend als Alternative zu den Cloudspeichern von Google und anderen.

Zusätzliche Information: Windows über einen Container starten
Podman kann mehr als nur Webanwendungen.
Die eher ungewöhnliche Idee, Windows 10 oder 11 über einen Container zu starten, stammt von https://github.com/dockur/windows und wir haben die Konfiguration für den deutschsprachigen Raum angepasst. Über http://m6u.de/WDOCK finden Sie die nötigen Dateien. Die Voraussetzung ist ein PC, der KVM/Qemu für die Virtualisierung nutzen kann. Der Podman-Container stellt nur die Software bereit, über die sich Windows starten lässt. Sie erzeugen den Container mit diesem Befehl:
podman compose -f windows-docker.yaml up
Die Windows-ISO-Datei wird heruntergeladen und Windows automatisch installiert. Den Fortschritt können Sie im Terminal verfolgen. Der Zugriff auf die Windows-Oberfläche erfolgt im Web-browser über die Adresse http://127.0.0.1:8006. Welche weiteren Optionen für die Installation verfügbar sind, erfahren Sie unter http://m6u.de/WDOCK.

