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. In der Übung ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Compose Files mit Podman auf Oracle Linux verwenden
Einführung
Podman und Docker Compose sind beide Befehlszeilentools, die eine speziell formatierte YAML-Datei als Eingabe verwenden, um einzelne oder mehrere Container als Anwendungen zu assemblieren und dann auszuführen. Mit diesen Tools können Entwickler eine einzelne YAML-Datei für ihre Anwendung entwickeln, testen und dann an ihre Benutzer übermitteln und nur einen Befehl verwenden, um sie zuverlässig zu starten und zu stoppen. Diese Portabilität und Zuverlässigkeit haben die Compose-Spezifikation bei Anwendern und Entwicklern sehr beliebt gemacht, und sie wird zunehmend zur Anforderung.
Ziele
In diesem Tutorial lernen Sie:
- Installieren und verwenden Sie
podman-compose
unddocker-compose
mit Podman - Stellen Sie sicher, dass sie mit einer einfachen
docker-compose.yaml
-Datei arbeiten
Voraussetzungen
-
Mindestens ein einziges Oracle Linux-System
-
Auf jedem System muss Oracle Linux installiert und konfiguriert sein mit:
- Ein Nicht-Root-Benutzerkonto mit Sudo-Zugriff
- 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
-
Bereitstellen der Übungsumgebung.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
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 unter den python3.6-Modulen installiert.Die Standard-Deployment-Ausprägung verwendet 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 das Playbook erfolgreich ausgeführt wird, und erreichen Sie die Unterbrechungsaufgabe. In dieser Phase des Playbooks ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Notieren Sie sich die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten und alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung erforderlich sind.
Podman für die Arbeit mit Compose Files einrichten
Podman hat die Unterstützung für die Docker Compose-Funktionalität in Podman v3.2.0 eingeführt, nachdem der eingeschränkte Support in Podman v3.0.0 eingeführt wurde. Dadurch wird die Möglichkeit eingeführt, Docker Compose aus Podman heraus zu verwenden. In jüngerer Zeit erweiterte Podman v4.1.0 die Unterstützung der Docker Compose-Funktionalität um die Verwendung von Docker Compose v2.2 und höher.
Podman-Docker-Package installieren
Installieren Sie das Package podman-docker
, mit dem Podman nativ mit Docker-Befehlen arbeiten kann.
sudo dnf install -y podman-docker
Docker Compose installieren
-
Download und Installation von Compose Standalone.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Beispielausgabe:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 60.1M 100 60.1M 0 0 103M 0 --:--:-- --:--:-- --:--:-- 378M
-
Wenden Sie ausführbare Berechtigungen auf die Binärdatei an.
sudo chmod +x /usr/local/bin/docker-compose
-
Bestätigen Sie die Erstellung eigenständiger Werke.
docker-compose version
Die Ausgabe gibt die aktuelle Version von
docker-compose
zurück.Hinweis: Für die Standalone-Installation von Compose, wie hier beschrieben, müssen Sie beispielsweise
docker-compose up
anstelle der standardmäßigendocker-compose up
-Syntax verwenden, die beim Ausführen des Docker-Utilitys verwendet wird.
Starten Sie den Podman Socket
Podman und Docker Compose erfordern jeweils den Start des Podman-Sockels, mit dem Systemaufrufe von jedem Programm über diesen systemgesteuerten Prozess mit Podman kommunizieren können.
-
Konfigurieren Sie den Podman-Socket.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
Die Ausgabe zeigt das systemd socket
active (listening)
. -
Ruft den Speicherort für den Podman-Socket-Speicherort des Benutzers ab.
podman info | grep -i remotesocket -A2
-
Prüfen Sie, ob das Socket mit cURL funktioniert.
curl -w "\n" -H "Content-Type: application/json" --unix-socket /run/user/$UID/podman/podman.sock http://localhost/_ping
Der Pfad für
--unix-socket
entspricht dem Pfad auspodman info
. Die Ausgabe dieses Befehls mussOK
zurückgeben, was eine erfolgreiche Konfiguration der Compose-Funktionalität angibt, die für die Arbeit mit docker-compose.yaml-Dateien bereit ist.
Podman Compose installieren
Podman Compose ist eine Python 3-Library, in der die Compose Specification für die Ausführung mit Podman implementiert wird.
-
Installieren und aktivieren Sie das Repository developer_EPEL.
Oracle Linux 8:
sudo dnf install -y oracle-epel-release-el8 sudo dnf config-manager --enable ol8_developer_EPEL
Oracle Linux 9:
sudo dnf install -y oracle-epel-release-el9 sudo dnf config-manager --enable ol9_developer_EPEL
Oracle Linux 10:
sudo dnf install -y oracle-epel-release-el10 sudo dnf config-manager --enable ol10_u0_developer_EPEL
-
Installieren Sie das Podman Compose-Paket.
sudo dnf install -y podman-compose
-
Bestätigen Sie die Podman Compose-Arbeiten, indem Sie ihre Version anzeigen.
podman-compose version
Erstellen einer Compose-Datei
Diese Compose-Datei ermöglicht das Abrufen und Starten der angegebenen Anwendung.
-
Erzeugen Sie ein Verzeichnis für den Test, und wechseln Sie in dieses Verzeichnis.
mkdir -p projects/echo cd projects/echo
-
Erstellen Sie die Compose-Datei.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Prüfen Sie die Compose-Datei.
cat compose.yaml
Podman Compose ausführen
-
Wechseln Sie in dasselbe Verzeichnis wie die Compose-Datei.
Wichtig:
podman-compose
-Befehle funktionieren nicht, es sei denn, Sie befinden sich in demselben Verzeichnis wie die Dateicompose.yaml
.cd ~/projects/echo/
-
Starten Sie die Anwendung
echoserver
.podman-compose up -d
Die Ausgabe zeigt, dass Podman den Container herunterruft und mit den in der Compose-Datei aufgeführten Parametern beginnt. Mit der Option
-d
wird Podman angewiesen, den Container im Hintergrund im getrennten Modus auszuführen. Podman ruft nur Images ab, die in der Compose-Datei referenziert werden, wenn sie nicht lokal vorhanden sind. -
Testen Sie, ob die echoserver-Anwendung hochgefahren und gestartet ist.
curl -X POST -d "foobar" http://localhost:8080/; echo
Beispielausgabe:
CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Prüfen Sie außerdem den Erfolg, indem Sie die Protokolle prüfen.
podman-compose logs
Beispielausgabe:
``text ['podman', '–version', ''] mit Podman-Version: 4.2.0 podman loggt echo_web_1 10.89.0.2 - - [17/Jan/2023:12:46:47 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1" Exit-Code: 0
-
Verwenden Sie das Podman Compose-Utility, um ausgeführte Container anzuzeigen.
podman-compose ps
Beispielausgabe:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f4053947c8c1 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 2 minutes ago Up 2 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Sie können andere Podman Compose-Utilitybefehle anzeigen, indem Sie
podman-compose --help
ausführen. -
Jetzt ist es an der Zeit, den Echoserver-Container zu stoppen.
podman-compose down
-
Entfernen Sie das zusätzliche Podman-Bridge-Netzwerk, das beim Container-Deployment erstellt wurde.
podman network rm echo_default
Bestätigen, dass Docker Compose funktioniert
-
Legen Sie die Umgebungsvariable für den Speicherort des Podman-Sockets fest.
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
-
Starten Sie die Anwendung echoserver.
Dieser Befehl muss im selben Verzeichnis wie die Compose-Datei ausgeführt werden.
docker-compose up -d
Die Ausgabe zeigt, wie das Netzwerk echo_default und der Container echo-web-1 erstellt werden.
-
Rufen Sie die Anwendung des Containers auf.
curl -X POST -d "foobar" http://localhost:8080/; echo
Beispielausgabe:
[oracle@ol-server ~]$ curl -X POST -d "foobar" http://localhost:8080/; echo CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Prüfen Sie die Logs, und bestätigen Sie, dass diese Anwendung eine Rücksendeanforderung erfolgreich weitergeleitet hat.
docker-compose logs
Beispielausgabe:
``Text echo-web-1 | 10.89.0.1 - - [17/Jan/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
Eine Liste der Container, die mit dem Docker Compose-Utility gestartet wurden.
docker-compose ps
Beispielausgabe:
echo-web-1 k8s.gcr.io/echoserver:1.4 "nginx -g daemon off;" web 12 minutes ago Up 12 minutes 8080/tcp
-
Stoppen Sie die Anwendung echoserver.
docker-compose down
Wichtige Informationen
Wenn Sie sowohl die ausführbaren Dateien podman-compose
als auch docker-compose
auf demselben System installieren, müssen Sie beachten, dass es nicht möglich ist, diese austauschbar aufzurufen. Was wir mit dieser Anweisung meinen, ist, dass, wenn Sie einen Prozess mit podman-compose
starten, Sie ihn nicht mit docker-compose
abfragen oder stoppen können oder umgekehrt.
-
Beginnen Sie mit Podman Compose.
podman-compose up -d
-
Versuchen Sie, die ausgeführten Container mit Docker Compose aufzulisten.
docker-compose ps
Die Ausgabe gibt eine leere Liste zurück, die zeigt, dass aus ihrer Perspektive keine Container ausgeführt werden.
-
Durch die Verwendung von Podman Compose wird jedoch bestätigt, dass der Container ausgeführt wird.
podman-compose ps
Beispielausgabe:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55335e797296 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 4 minutes ago Up 4 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Nächste Schritte
Dadurch wird bestätigt, wie eine Compose-Datei mit Podman mit podman-compose
oder docker-compose
verwendet wird.
Verwandte Links
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use Compose Files with Podman on Oracle Linux
F76750-02