GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie Container als Systemd-Dienst mit Podman aus

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


Linux
  1. So erstellen Sie einen Systemd-Dienst unter Linux

  2. Linux – Wie bekommt man mit Systemd weniger Ttys?

  3. So leiten Sie die Ausgabe des systemd-Dienstes in eine Datei um

  4. Wie stoppen Sie den systemd-Dienst

  5. Wie führe ich ein Skript vor allem anderen beim Herunterfahren mit systemd aus?

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

Verwalten von cgroups mit systemd

So führen Sie Podman unter Windows aus

So führen Sie Pods als systemd-Dienste mit Podman aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So führen Sie einen Alias ​​mit Sudo in Linux aus