Wie wir wissen, ist Podman ein Daemon-loses Open-Source-Tool, das eine Umgebung zum Erstellen, Ausführen und Verwalten von Containern bietet. Das Ausführen von Containern als systemd-Dienst bedeutet, dass Container automatisch gestartet werden, wenn das System neu gestartet wird.
In diesem Beitrag erfahren wir, wie Container als systemd-Dienst mit podman auf RHEL-basierten Distributionen wie RHEL 8, CentOS 8 und Rocky Linux 8 ausgeführt werden.
Voraussetzungen :
- Minimale RHEL-basierte Betriebssysteminstallation.
- Stabile Internetverbindung
- Sudo-Benutzer mit Root-Rechten
In dieser Demonstration verwende ich minimal RHEL 8.5, aber diese Schritte gelten auch für CentOS 8 und Rocky Linux 8. Beginnen wir mit den Schritten,
Schritt 1) Installieren Sie Podman
Um podman auf RHEL 8 zu installieren, führen Sie
aus$ sudo dnf install @container-tools -y
Führen Sie für CentOS 8/Rocky Linux 8
aus$ sudo dnf install -y podman
Podman-Installation überprüfen
Um zu überprüfen, ob podman erfolgreich installiert wurde oder nicht, versuchen Sie, den „hello-world“-Container mit dem folgenden podman-Befehl zu drehen.
$ podman -v podman version 3.3.1 $ $ podman run 'hello-world'
Hinweis:Wenn wir podman zum ersten Mal ausführen, werden wir aufgefordert, die Registrierung auszuwählen, in die Sie das Container-Image herunterladen möchten.
Die Ausgabe des obigen Befehls würde wie folgt aussehen:
Präfekt oben bestätigt, dass podman erfolgreich installiert wurde. Kommen wir zum nächsten Schritt.
Schritt 2) Systemd-Dienst eines Containers generieren
Nehmen wir an, wir möchten den systemd-Dienst für den rsyslog-Container generieren. Starten Sie zuerst den rsyslog-Container mit den folgenden Podman-Befehlen,
$ podman run -d --name <Container-Name> <Image-Name>
Hinweis:Wenn Sie ein rsyslog-Container-Image von einer bestimmten Registrierung herunterladen möchten, verwenden Sie die folgende Syntax:
$ podman run -d --name container-name <registry-URL>/<image-name>
In dieser Demonstration habe ich die Red-Hat-Registrierung verwendet. Melden Sie sich also zuerst bei der Registrierung an
$ podman login registry.access.redhat.com Username: <Specify-User-Name> Password: <Enter-Password> Login Succeeded! $
Versuchen Sie nun, den Container mit dem folgenden Podman-Befehl zu drehen,
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog $ podman ps
Erstellen Sie nun den systemd-Dienst für den rsyslog-server-Container und führen Sie die folgenden Befehle aus
$ mkdir -p .config/systemd/user $ cd .config/systemd/user/ $ podman generate systemd --name rsyslog-server --files --new /home/sysops/.config/systemd/user/container-rsyslog-server.service $
Wie wir oben sehen können, wird dieser systemd-Dienst erstellt.
Weitere Einzelheiten zum Befehl „podman generate systemd“ finden Sie auf dessen Hilfeseite
$ podman generate systemd --help
Schritt 3) Container Systemd Service starten und aktivieren
Führen Sie den folgenden systemctl-Befehl aus, um den systemd-Dienst für den rsyslog-server-Container zu starten und zu aktivieren.
$ cd .config/systemd/user/ $ systemctl --user daemon-reload $ systemctl --user enable container-rsyslog-server.service $ systemctl --user restart container-rsyslog-server.service
Überprüfen Sie nun den systemd-Dienststatus und den Containerstatus, führen Sie
aus$ systemctl --user status container-rsyslog-server.service $ podman ps
Wenn das System jetzt neu gestartet wird, wird der Container automatisch über seinen systemd-Dienst gestartet. Lassen Sie uns es also einmal neu starten und den Containerdienst überprüfen.
$ sudo reboot
Sobald das System wieder online ist, melden Sie sich beim System an und überprüfen Sie den Containerdienst
$ podman ps $ cd .config/systemd/user/ $ systemctl --user status container-rsyslog-server.service
Großartig, dies bestätigt, dass der Container rsyslog-server automatisch nach dem Neustart über seinen systemd-Dienst gestartet wird.
Das ist alles aus diesem Beitrag, ich hoffe, Sie fanden ihn informativ. Bitte teilen Sie uns Ihr Feedback und Ihre Fragen mit.
Auch lesen :Wie man Jenkins Container als Systemd Service mit Docker ausführt