Zum Inhalt

Einleitung

Podman ist eine Docker-kompatible alternative Container-Laufzeitumgebung, die im Gegensatz zu Docker in den Rocky Linux-Repositorys enthalten ist und Container als systemd-Dienst ausführen kann.

Podman Installieren

Das Dienstprogramm dnf verwenden, um Podman zu installieren:

dnf install podman

Container hinzufügen

Lassen Sie uns als Beispiel eine selbst gehostete Cloud-Plattform von Nextcloud betreiben:

podman run -d -p 8080:80 nextcloud

Sie werden aufgefordert, die Container-Registry auszuwählen, von der heruntergeladen werden soll. In unserem Beispiel verwenden wir docker.io/library/nextcloud:latest.

Nachdem Sie den Nextcloud-Container heruntergeladen haben, wird dieser ausgeführt.

Geben Sie ip_address:8080 in Ihren Webbrowser ein (vorausgesetzt, Sie haben den Port in firewalld geöffnet) und richten Sie Nextcloud ein:

Nextcloud in container

Ausführen von Containern als systemd-Dienste

quadlet-Verwendung

Seit 4.4 wird Podman mit Quadlet ausgeliefert, einem Systemd-Generator, der Unit-Dateien für Rootless- und Rootful-Systemd-Dienste generieren kann.

Quadlet-Dateien für Root-Dienste können in folgende Verzeichnisse abgelegt werden

  • /etc/containers/systemd/
  • /usr/share/containers/systemd/

während rootless Dateien in einem der folgenden Verzeichnisse abgelegt werden können

  • $XDG_CONFIG_HOME/containers/systemd/ oder ~/.config/containers/systemd/
  • /etc/containers/systemd/users/$(UID)
  • /etc/containers/systemd/users/

Obwohl einzelne Container, Pods, Images, Netzwerke, Volumes und Kube-Dateien unterstützt werden, konzentrieren wir uns auf unser Nextcloud-Beispiel. Erstellen Sie eine neue Datei ~/.config/containers/systemd/nextcloud.cotainer mit folgendem Inhalt:

[Container]
Image=nextcloud
PublishPort=8080:80

Viele andere Optionen sind auch verfügbar.

So führen Sie den Generator aus und teilen systemd mit, dass ein neuer Dienst vorhanden ist:

systemctl --user daemon-reload

So starten Sie Ihren Dienst:

systemctl --user start nextcloud.service

Anmerkung

Wenn Sie eine Datei in einem der Verzeichnisse für Root-Dienste erstellt haben, lassen Sie das Flag `--user` weg.

Um den Container beim Systemstart oder bei der Benutzeranmeldung automatisch auszuführen, können Sie Ihrer Datei nextcloud.container einen weiteren Abschnitt hinzufügen:

[Install]
WantedBy=default.target

Da die generierten Servicedateien als vorübergehend gelten, können sie von systemd nicht aktiviert werden. Um dies zu umgehen, wendet der Generator Installationen während der Generierung manuell an. Dadurch werden auch diese Servicedateien effektiv aktiviert.

Andere Dateitypen werden unterstützt: Pod, Volume, Network, Image und Kube. Pods können beispielsweise zum Gruppieren von Containern verwendet werden – die generierten systemd-Dienste und ihre Abhängigkeiten (erstellen vom Pod vor den Containern) werden automatisch von systemd verwaltet.

Verwendung von podman generate systemd

Podman bietet zusätzlich den Unterbefehl generate systemd. Es kann zum Generieren von systemd-Servicedateien verwendet werden.

Warnhinweis

`generate systemd` ist jetzt obsolet und wird keine weiteren Features bekommen. Die Verwendung von `Quadlet` wird empfohlen.

Sie werden es jetzt mit Nextcloud machen. Folgendes Kommando ausführen:

podman ps

Sie erhalten eine Liste der laufenden Container:

04f7553f431a  docker.io/library/nextcloud:latest  apache2-foregroun...  5 minutes ago  Up 5 minutes  0.0.0.0:8080->80/tcp  compassionate_meninsky

Wie oben zu sehen ist, heißt unser Container compassionate_meninsky.

Führen Sie Folgendes aus, um einen systemd-Dienst für den Nextcloud-Container zu erstellen und ihn beim Neustart zu aktivieren:

podman generate systemd --name compassionate_meninsky > /usr/lib/systemd/system/nextcloud.service
systemctl enable nextcloud

Ersetzen Sie den Platzhalter „compassionate_meninsky“ durch den Ihrem Container zugewiesenen Namen.

Beim Neustart Ihres Systems wird Nextcloud innerhalb Podman neu gestartet.

Author: Neel Chauhan

Contributors: Steven Spencer, Ganna Zhyrnova, Christian Steinert