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. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Verfassen von Dateien mit Podman
Einführung
Docker Compose ist ein Befehlszeilentool, das eine speziell formatierte YAML-Datei als Eingabe verwendet, um einzelne oder mehrere Container als Anwendungen zu assemblieren und dann auszuführen. Dies ermöglicht es Entwicklern, eine einzelne YAML-Datei für ihre Anwendung zu entwickeln, zu testen und dann ihren Benutzern zu übermitteln. Sie können nur einen Befehl verwenden, um sie zuverlässig zu starten und zu stoppen. Diese Portabilität und Zuverlässigkeit hat Docker Compose nicht nur bei Benutzern und Entwicklern sehr beliebt gemacht, sondern zunehmend auch eine Anforderung.
Ziele
In dieser Übung wird gezeigt, wie Sie sowohl podman-compose
als auch docker-compose
mit Podman installieren und verwenden und prüfen, ob sie mit einer einfachen docker-compose.yaml
-Datei arbeiten.
Voraussetzungen
- Ein Clientsystem mit installiertem Oracle Linux
- Podman installiert (das "Container-Tools"-Package)
- Zugriff auf das Internet
Oracle Support-Haftungsausschluss
Oracle bietet keinen technischen Support für die Abfolge der Schritte, die in den folgenden Anweisungen angegeben sind, da diese Schritte Softwareprogramme und Betriebssysteme referenzieren, die nicht von Oracle bereitgestellt werden. Dieses Tutorial enthält nur optionale Anweisungen.
Weitere Informationen zur von Oracle unterstützten Methode für die Entwicklung und Verwendung von Podman-basierten Services finden Sie unter https://docs.oracle.com/en/operating-systems/oracle-linux/podman/.
Übungsumgebung einrichten
Hinweis: Bei der Verwendung der kostenlosen Übungsumgebung finden Sie unter Oracle Linux - Grundlagen für Verbindungen und andere Verwendungsanweisungen.
-
Öffnen Sie ein Terminal, und stellen Sie eine SSH-Verbindung zur ol-server-Instanz her, falls noch keine Verbindung besteht.
ssh oracle@<ip_address_of_instance>
Podman-Arbeit bestätigen
Das Containertools-Package in Oracle Linux stellt die neuesten Versionen von Podman, Buildah, Skopeo und zugehörigen Abhängigkeiten bereit.
-
Prüfen Sie die Podman-Version.
podman -v
-
Stellen Sie sicher, 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
Podman für die Arbeit mit Compose-Dateien einrichten
Podman hat den Support für die Docker Compose-Funktionalität in Podman v3.2.0 eingeführt, nachdem begrenzter Support in Podman v3.0.0 eingeführt wurde. So wurde die Möglichkeit eingeführt, Docker Compose aus Podman 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.
In den folgenden Schritten wird beschrieben, wie Sie sowohl podman-compose
als auch docker-compose
installieren und konfigurieren.
Podman-Docker-Package installieren
So kann Podman nativ mit Docker-Befehlen arbeiten.
-
Installieren Sie das Package
podman-docker
.sudo dnf install -y podman-docker
Docker Compose installieren
Hinweis:
Für das Installieren von Compose in eigenständiger Weise, wie hier beschrieben, ist die Verwendung von
docker-compose
anstelle der Standardsyntax erforderlich, die bei der Verwendung des Docker-Utilitys vondocker compose
verwendet wird. Das heißt, ersetzen Sie stattdessen diedocker compose up
-Syntax durchdocker-compose up
.
-
Laden Sie Compose Standalone herunter, und installieren Sie es.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Beispielausgabe:
[oracle@ol-server ~]$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose % 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 42.8M 100 42.8M 0 0 158M 0 --:--:-- --:--:-- --:--:-- 158M
-
Wenden Sie ausführbare Berechtigungen auf die Binärdatei an.
sudo chmod +x /usr/local/bin/docker-compose
-
Verfassen von eigenständigen Arbeiten bestätigen
docker-compose version
Beispielausgabe:
[oracle@ol-server ~]$ docker-compose version Docker Compose version v2.15.1
Podman Socket starten
Die folgenden Schritte sind erforderlich, um die Docker Compose-Funktionalität durch Erstellen eines Unix-Socket zu aktivieren.
-
Konfigurieren Sie das Podman-Socket mit den folgenden Schritten.
sudo systemctl enable --now podman.socket sudo systemctl status podman.socket
Beispielausgabe:
[oracle@ol-server ~]$ sudo systemctl enable --now podman.socket Created symlink /etc/systemd/system/sockets.target.wants/podman.socket -> /usr/lib/systemd/system/podman.socket. [oracle@ol-server ~]$ sudo systemctl status podman.socket * podman.socket - Podman API Socket Loaded: loaded (/usr/lib/systemd/system/podman.socket; enabled; vendor preset) Active: active (listening) since Thu 2023-01-19 20:58:20 GMT; 16s ago Docs: man:podman-system-service(1) Listen: /run/podman/podman.sock (Stream) CGroup: /system.slice/podman.socket Jan 19 20:58:20 ol-server systemd[1]: Listening on Podman API Socket.
-
Prüfen Sie, ob das Socket wie erwartet mit curl funktioniert.
sudo curl -w "\n" -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
Beispielausgabe:
[oracle@ol-server ~]$ sudo curl -w "\n" -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping OK [oracle@ol-server ~]$
Wenn die Ausgabe dieses Befehls OK
zurückgibt, wurde die Compose-Funktionalität erfolgreich für die Arbeit mit docker-compose.yaml-Dateien konfiguriert.
Podman Compose installieren
Podman Compose ist eine Python 3-Bibliothek, in der die Spezifikation verfassen zur Ausführung mit Podman implementiert wird.
-
Prüfen Sie vor der Installation von Podman Compose, ob Pip auf die neueste Version aktualisiert wurde.
sudo -H pip3 install --upgrade pip
-
Installieren Sie das Podman Compose-Package.
sudo pip3 install podman-compose
Wenn Sie
pip3 install
alssudo
ausführen, können die WARNING-Nachrichten ignoriert werden. -
Bestätigen Sie, dass Podman Compose funktioniert.
podman-compose version
Beispielausgabe:
[oracle@ol-server ~]$ podman-compose version ['podman', '--version', ''] using podman version: 4.2.0 podman-composer version 1.0.3 podman --version podman version 4.2.0 exit code: 0
Docker Compose-Datei erstellen
Mit dieser docker-compose.yaml-Datei können Sie die angegebene Anwendung abrufen und starten.
-
Erstellen Sie ein Verzeichnis für den Test.
mkdir -p Documents/examples/echo
-
Wechseln Sie in das Verzeichnis.
cd Documents/examples/echo
-
Erstellen Sie die Datei docker-compose.yaml.
cat >> docker-compose.yaml << EOF --- version: '3' services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Prüfen Sie die soeben erstellte Docker-compose.yaml.
cat docker-compose.yaml
Beispielausgabe:
[oracle@ol-server echo]$ cat docker-compose.yaml --- version: '3' services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "8080:8080"
Bestätigen, dass Podman Compose in Bearbeitung ist
-
Wechseln Sie zu dem Verzeichnis, in dem sich die docker-compose-Datei befindet.
Wichtig:
podman-compose
-Befehle funktionieren nicht, es sei denn, Sie befinden sich in dem Verzeichnis, in dem sich die Dateidocker-compose.yaml
befindet.cd ~/Documents/examples/echo/
-
Starten Sie die Anwendung
echoserver
.podman-compose up -d
Beispielausgabe:
[oracle@ol-server echo]$ podman-compose up -d ['podman', '--version', ''] using podman version: 4.2.0 ** excluding: set() ['podman', 'network', 'exists', 'echo_default'] ['podman', 'network', 'create', '--label', 'io.podman.compose.project=echo', '--label', 'com.docker.compose.project=echo', 'echo_default'] ['podman', 'network', 'exists', 'echo_default'] podman create --name=echo_web_1 --label io.podman.compose.config-hash=123 --label io.podman.compose.project=echo --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=echo --label com.docker.compose.project.working_dir=/home/oracle/examples/echo --label com.docker.compose.project.config_files=docker-compose.yaml --label com.docker.compose.container-number=1 --label com.docker.compose.service=web --net echo_default --network-alias web -p 8080:8080 k8s.gcr.io/echoserver:1.4 Trying to pull k8s.gcr.io/echoserver:1.4... Getting image source signatures Copying blob d3c51dabc842 done Copying blob a3ed95caeb02 done Copying blob 6d9e6e7d968b done Copying blob 412c0feed608 done Copying blob cd23f57692f8 done Copying blob dcd34d50d5ee done Copying blob a3ed95caeb02 skipped: already exists Copying blob a3ed95caeb02 skipped: already exists Copying blob a3ed95caeb02 skipped: already exists Copying blob b4241160ce0e done Copying blob 7abee76f69c0 done Writing manifest to image destination Storing signatures 1b54b75ca13786d33df6708da1d83ecce14b055e78b03007c3c4e1f441e7139c exit code: 0
Hinweis: Wie bei Podman werden alle in der Datei
docker-compose.yaml
referenzierten Container nur abgerufen, wenn sie noch nicht im System vorhanden sind. -
Testen Sie, ob die Anwendung
echoserver
hochgefahren und gestartet ist.curl -X POST -d "foobar" http://localhost:8080/; echo
Beispielausgabe:
[oracle@ol-server echo]$ 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 außerdem den Erfolg, indem Sie die Logs prüfen.
podman-compose logs
Beispielausgabe:
[oracle@ol-server echo]$ podman-compose logs ['podman', '--version', ''] using podman version: 4.2.0 podman logs 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:
[oracle@ol-server echo]$ podman-compose ps ['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
Hinweis: Weitere Podman Compose-Utilitybefehle finden Sie unter
podman-compose --help
. Für diese Übung gelten diese zusätzlichen Befehle jedoch nicht. -
Jetzt ist es an der Zeit, den echoweb-Service zu stoppen.
podman-compose down
Stellen Sie sicher, dass Docker Compose in Bearbeitung ist
-
(Optional) Wechseln Sie in das Verzeichnis, in dem sich die docker-compose-Datei befindet.
Wichtig:
docker-compose
-Befehle funktionieren nicht, es sei denn, Sie befinden sich in dem Verzeichnis, in dem sich die Dateidocker-compose.yaml
befindet.cd ~/Documents/examples/echo/
-
Starten Sie die Anwendung
echoserver
.sudo /usr/local/bin/docker-compose up -d
Beispielausgabe:
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose up -d [+] Running 0/0 [+] Running 0/1echo-web-1 Starting 0.0 [+] Running 0/1echo-web-1 Starting 0.1 [+] Running 0/1echo-web-1 Starting 0.2 [+] Running 0/1echo-web-1 Starting 0.3 [+] Running 0/1echo-web-1 Starting 0.4 [+] Running 0/1echo-web-1 Starting 0.5 [+] Running 0/1echo-web-1 Starting 0.6 [+] Running 0/1echo-web-1 Starting 0.7 [+] Running 1/1echo-web-1 Starting 0.8 ��� Container echo-web-1 Started 0.8s
HINWEIS:
Wenn die folgende Ausgabe bei der Ausführung dieses Befehls zurückgegeben wird:
��� Container echo-web-1 Starting 0.9s Error response from daemon: cannot listen on the TCP port: listen tcp4 :8080: bind: address already in use
Keine Sorge, das bedeutet nur, dass der Befehl
podman-compose down
nicht ausgeführt wurde und der zuvor mitpodman-compose
gestartete echoserver-Container weiterhin ausgeführt wird. Führen Sie die vorherigen Schritte aus, um es zu stoppen. -
Testen Sie, ob der Container ausgeführt wird.
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 mit dem Docker Compose-Utility, und bestätigen Sie, dass eine erfolgreiche Anforderung von dieser Anwendung zurückgegeben wurde.
sudo /usr/local/bin/docker-compose logs
Beispielausgabe:
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose logs echo-web-1 | 10.89.0.1 - - [17/Jan/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
Mit dem Utility Docker Compose können Sie auch die von der Compose-Datei gestarteten Container prüfen.
sudo /usr/local/bin/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
Hinweis: Weitere Docker Compose-Utilitybefehle finden Sie unter
docker-compose --help
. Für diese Übung gelten diese zusätzlichen Befehle jedoch nicht. -
Stoppen Sie den echoweb-Service.
sudo /usr/local/bin/docker-compose down
Beispielausgabe:
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose down [+] Running 0/0 [+] Running 0/1echo-web-1 Stopping 0.1 [+] Running 0/1echo-web-1 Stopping 0.2 [+] Running 0/1echo-web-1 Stopping 0.3 [+] Running 2/1echo-web-1 Removing 0.4 ��� Container echo-web-1 Removed 0.4s ��� Network echo_default Removed 0.0s
Wichtige Informationen
Wenn die ausführbaren Dateien podman-compose
und docker-compose
auf demselben System installiert sind, müssen Sie beachten, dass sie nicht möglich austauschbar aufgerufen werden können. Wenn ein Prozess mit podman-docker
gestartet wird, kann er nicht mit dem Utility docker-compose
abgefragt oder gestoppt werden, oder umgekehrt, wie im folgenden Beispiel dargestellt:
-
Wechseln Sie zu dem Verzeichnis, in dem sich die Verfassen-Datei befindet.
Wichtig: Die Befehle
podman-compose
oderdocker-compose
funktionieren nicht, es sei denn, Sie befinden sich in dem Verzeichnis, in dem sich die Dateidocker-compose.yaml
befindet.cd ~/Documents/examples/echo/
-
Beginnen Sie mit Podman Compose.
podman-compose up -d
-
Versuchen Sie, die ausgeführten Container mit Docker Compose aufzulisten.
sudo /usr/local/bin/docker-compose ps
Beispielausgabe
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
-
Mit Podman Compose wird jedoch bestätigt, dass der Container ausgeführt wird.
podman-compose ps
Beispielausgabe:
[oracle@ol-server echo]$ podman-compose ps ['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
Übersicht
Dadurch wird bestätigt, wie Sie eine Compose-Datei mit Podman mit podman-compose
oder docker-compose
verwenden.
Weitere Informationen
Weitere zugehörige Ressourcen anzeigen:
- Oracle Learning Library
- Oracle Linux-Dokumentation:
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Using Compose Files with Podman
F76747-01
January 2023
Copyright © 2023, Oracle and/or its affiliates.