Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Ausführen von Podman Containern unter Systemd mit Quadlet
Einführung
Quadlet bietet eine Möglichkeit, Container unter systemd unter Oracle Linux auszuführen. Sie definieren den Container, der unter einem [Container]
-Abschnitt in einem vertrauten Format mit der standardmäßigen Podman-Befehlszeilensyntax ausgeführt werden soll, und nutzen alle Vorteile der Optionen [Unit]
und [Service]
von systemd. Der Vorteil von systemd zum Ausführen Ihrer Container besteht darin, dass systemd in das Betriebssystem integriert ist, sodass Sie Container haben können, die beim Start des Systems beginnen oder die Reihenfolge und Abhängigkeit zwischen einer Mehrcontainerkonfiguration festlegen.
Quadlet ersetzt eine ältere Methode, die Podman für die Integration mit systemd verwendet. Diese Methode besteht darin, einen Container zu erstellen, eine Servicedatei zu generieren, die Servicedatei zu verschieben und den Service dann zu aktivieren. In vielen Fällen würden Benutzer Zeit damit verbringen, diese Schritte in Bash-Skripte zu schreiben und müssen dann diese Skripte und die generierten Dateien verwalten. Je nach Perspektive eines Benutzers vereinfacht Quadlet diese Aufgabe.
Ziele
In diesem Tutorial lernen Sie Folgendes:
- .container-Datei erstellen
- Neuen Containerservice starten
- Container testen
- Container aktualisieren
Voraussetzungen
-
Mindestens ein einzelnes Oracle Linux-System
-
Auf jedem System muss Oracle Linux installiert und konfiguriert sein mit:
- Ein Nicht-Root-Benutzerkonto mit Sudo-Zugriff
- Podman- und cURL-Packages
- Cgroup v2
- Zugriff auf das Internet
Oracle Linux bereitstellen
Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs
GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.
-
Öffnen Sie ein Terminal auf dem Luna Desktop.
-
Klonen Sie das Projekt
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Wechseln Sie in das Arbeitsverzeichnis.
cd linux-virt-labs/ol
-
Installieren Sie die erforderlichen Sammlungen.
ansible-galaxy collection install -r requirements.yml
-
Stellen Sie die Übungsumgebung bereit.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e use_podman=true -e update_all=true -e os_version="9"
Die kostenlose Übungsumgebung erfordert die zusätzliche Variable
local_python_interpreter
, dieansible_python_interpreter
für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python installiert, das sich unter den python3.6-Modulen befindet.Die Standard-Deployment-Ausprägung verwendet die AMD-CPU und Oracle Linux 8. Um eine Intel-CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl
-e instance_shape="VM.Standard3.Flex"
oder-e os_version="9"
hinzu.Wichtig: Warten Sie, bis die Arbeitsmappe erfolgreich ausgeführt wurde, und erreichen Sie die Aufgabe "Unterbrechen". In dieser Phase des Spiels ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Beachten Sie die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten sowie alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung benötigt werden.
Podman-Funktionen bestätigen
Das Container-Tool-Package in Oracle Linux stellt die neuesten Versionen von Podman, Buildah, Skopeo und zugehörigen Abhängigkeiten bereit.
-
Öffnen Sie ein Terminal, und stellen Sie über SSH eine Verbindung zur Instanz ol-node-01 her.
ssh oracle@<ip_address_of_instance>
-
Prüfen Sie die Podman-Version.
podman -v
-
Vergewissern Sie sich, dass die Podman-CLI funktioniert.
podman run quay.io/podman/hello
Beispielausgabe:
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
Quadlets erstellen
Ein Quadlet ist nur die Erstellung einer .container-Datei in einem bestimmten Verzeichnis mit einem [Container]
-Abschnitt, in dem die Startoptionen des Containers beschrieben werden.
-
Erstellen Sie das systemd-Containerverzeichnis des Benutzers.
mkdir -p ~/.config/containers/systemd
-
Erstellen Sie eine .container-Datei.
cat << EOF | tee ~/.config/containers/systemd/test-ol.container > /dev/null [Unit] Description=My First Quadlet [Container] Image=ghcr.io/oracle/oraclelinux:9 AutoUpdate=registry Exec=sleep 60 [Service] Restart=always TimeoutStartSec=900 [Install] WantedBy=multi-user.target default.target EOF
Dieses Quadlet führt den Oracle Linux-Container aus und führt eine
sleep 60
im Container aus. Sobaldsleep 60
abgeschlossen ist, wird der Container beendet, und systemd startet ihn neu. Für den Abschnitt[Container]
sind weitere Optionen vorhanden, und eine Liste ist in der Upstream-Dokumentation verfügbar.Weitere Informationen zu den Optionen
[Service]
,[Unit]
und[Install]
finden Sie in der Manpage systemd.unit(5). -
Aktivieren Sie das Verbleiben für den Benutzer.
sudo loginctl enable-linger oracle
-
Informieren Sie systemd über die neue Unit-Datei.
systemctl --user daemon-reload
Mit diesem Schritt wird test-ol.service basierend auf der Datei test-ol.container erstellt.
-
Starten Sie den Service.
systemctl --user start test-ol.service
Der Service führt
podman
aus, um das Oracle Linux-Image herunterzuladen, und gibt dann diesleep 60
im Containerimage aus. -
Prüfen Sie den Status des Service.
systemctl --user status test-ol.service
Wiederholen Sie diesen Befehl, um den Container nach der Ausführung von
sleep 60
zu stoppen und neu zu starten. Sie können die Logs auch prüfen, indem Siesudo journalctl _SYSTEMD_USER_UNIT=test-ol.service
ausführen. -
Container aktualisieren.
Mit dem Eintrag
AutoUpdate=registry
im Abschnitt[Container]
aktivieren Sie das Featurepodman auto-update
, um die Containerimages zu aktualisieren. Wenn dies jedoch automatisch und nicht manuell erfolgen soll, müssen Sie auch den erforderlichen Service aktivieren.systemctl --user enable podman-auto-update
Sie können
podman auto-update --dry-run
manuell ausführen, um zu prüfen, ob ein Update verfügbar ist. Da wir gerade das neueste Bild vor ein paar Minuten heruntergeladen haben, gibt es keine Updates, und daher gibt es nichts zu tun. Wenn jedoch ein Update erfolgt, können Sie die Option--dry-run
entfernen, undpodman
ruft das neueste Image ab und startet den Container neu.
Nächste Schritte
In diesem Tutorial wird gezeigt, wie Sie Quadlet verwenden, um einen minimalen Container mit systemd zu verwalten. Erfahren Sie mehr, indem Sie die Dokumentation durchlesen und zusätzliche Container erstellen, die Speicher nutzen und Multi-Container-Abhängigkeiten aufweisen.
Verwandte Links
- Quadlet Upstream-Dokumentation
- Dokumentation zu Oracle Linux
- Oracle Learning Library
- Oracle Linux-Schulungsstation
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Run Podman Containers Under Systemd with Quadlet
G32063-01
Copyright ©2025, Oracle and/or its affiliates.