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

Podman-Tutorial – Erste Schritte mit Podman

Dieses Tutorial erklärt die ersten Schritte mit Podman in Linux-Betriebssystemen. Am Ende dieses Podman-Tutorials lernen Sie die Grundlagen von Podman kennen, z. B. wie Sie Bilder suchen und herunterladen, einen neuen Container aus dem Bild erstellen, einen Container ausführen, einen Container entfernen und Ihr eigenes Bild aus dem Container erstellen und vieles mehr.

Bevor wir mit Podman beginnen, vergewissern Sie sich, dass Sie Podman auf Ihrem Linux-Rechner installiert haben.

  • Was ist Podman und wie wird Podman unter Linux installiert

Erste Schritte mit Podman

Podman bietet eine Befehlszeilenschnittstelle (CLI) ähnlich dem Docker Container-Engine. Tatsächlich zielt Podman darauf ab, ein direkter Ersatz für den von Docker bereitgestellten Docker-Client zu sein.

Podman- und Docker-Befehle sind fast gleich. Sie können docker einfach ersetzen mit podman in den meisten Docker-Befehlen. Zum Beispiel der docker run Der Befehl wird zu podman run und docker build wird zu podman build und so weiter.

Sie können sogar einen docker erstellen Alias ​​für podman wie unten:

$ alias docker=podman

Ab sofort können Sie beide docker verwenden und podman Befehle gleichzeitig. Wenn Sie beispielsweise docker ausführen ps, es wird automatisch podman ausgeführt ps-Befehl. Der Übergang von Docker zu Podman ist viel einfacher geworden!

1. Podman-Hilfe erhalten

Das erste, was Sie wahrscheinlich tun möchten, nachdem Sie eine Anwendung installiert haben, ist, in deren Hilfeabschnitt nachzusehen.

Um das Podman-Hilfehandbuch zusammen mit der Liste der verfügbaren Unterbefehle und allgemeinen Optionen anzuzeigen, führen Sie Folgendes aus:

$ podman --help

Um die Verwendung eines beliebigen Unterbefehls zu lernen, zum Beispiel attach , tun Sie einfach:

$ podman Attach --help

2. Bilder suchen

Glücklicherweise sind die von Docker und Podman erstellten Images mit dem OCI-Standard kompatibel. So kann Podman Bilder aus Containerregistrierungen wie dem Docker Hub pushen und ziehen und Quay.io .

Lassen Sie uns mit folgendem Befehl nach Alpine Linux-Images suchen:

$ podman search alpine

Wie Sie sehen können, listet Podman Alpine-Images sowohl von Docker Hub als auch von Quay auf.

Wenn Sie Bilder herunterladen, können Sie auswählen, wo Sie sie erhalten möchten.

Ebenso können Sie Bilder basierend auf Arch Linux wie folgt suchen:

$ podman archlinux durchsuchen

Docker Hub und Quay haben viele Bilder verschiedener Typen. Ob es sich um eine Anwendung oder ein Betriebssystem handelt, Sie finden die vorgefertigten Container-Images aus diesen Registrierungen.

3. Bilder herunterladen

Für die Zwecke dieses Leitfadens lade ich Redhat 8 Universal Base Image (UBI) herunter.

Um das Redhat-Image mit Podman herunterzuladen, führen Sie Folgendes aus:

$ podman pull redhat/ubi8

Sie werden aufgefordert, eine Containerregistrierung zum Herunterladen auszuwählen. Ich habe Docker-Hub gewählt. Sie sehen einen kleinen Pfeil vor der ausgewählten Registrierung.

? Bitte wählen Sie ein Bild aus:Registry.fedoraproject.org/redhat/ubi8:latest Registry.access.redhat.com/redhat/ubi8:latest ▸ docker.io/redhat/ubi8:latest quay.io/redhat/ubi8:latest

Das Container-Image wird von der ausgewählten Registrierung heruntergeladen.

 ✔ docker.io/redhat/ubi8:latestTrying zu docker.io/redhat/ubi8:latest...Getting Bildquelle signaturesCopying blob a50df8fd88fe ziehen blob getan Kopieren 1cadda38f72d Kopieren Config 0ced1c7c9b Schreiben Manifest Bild getan getan destinationStoring signatures0ced1c7c9b23d0e107c7b15d5a0017abbbcf7e64e49a4c9f9efa1b9589ca8b68   

Unabhängig vom verwendeten Verteilungstyp können Sie verschiedene Arten von Bildern herunterladen und ausführen. Beispielsweise können Sie Alpine-Images auf einem Fedora-Host herunterladen und verwenden und umgekehrt.

$ podman pull alpine

Sie können sogar eine bestimmte Version eines Bildes herunterladen. Der folgende Befehl lädt das Ubuntu-Image der Version 20.04 herunter:

$ podman pull ubuntu:20.04

Da wir Podman als Nicht-Root-Benutzer verwenden, werden alle Container-Images im Home-Verzeichnis des Benutzers gespeichert, d. h. $HOME/.local/share/containers/storage , statt /var/lib/containers .

$ ls ~/.local/share/containers/storage/ cache libpod mounts overlay overlay-containers overlay-images overlay-layers storage.lock tmp userns.lock

4. Bilder ansehen

Um die Liste der lokal heruntergeladenen Bilder anzuzeigen, führen Sie Folgendes aus:

$ Podman-Bilder

Beispielausgabe:

REPOSITORY TAG IMAGE ID ERSTELLT GRÖSSEdocker.io/library/ubuntu 20.04 1318b700e415 vor 7 Tagen 75,2 MBdocker.io/redhat/ubi8 neuste 0ced1c7c9b23 vor 13 Tagen 234 MBdocker.io/library/alpine neuste d4ff818577bc vor 6 Wochen 5,87 MB  

Wie Sie sehen können, listet die obige Ausgabe den Namen des Repositorys auf, in das wir die Bilder heruntergeladen haben, das Bild-Tag, die Bild-ID, wann das Bild erstellt wurde und die Bildgröße.

Für diejenigen, die sich fragen, das TAG bezieht sich auf einen bestimmten Schnappschuss des Ubuntu-Images (z. B. 20.04 und aktuell). TAG ist nur ein zusätzlicher Name für ein lokales Bild. Die BILD-ID (z. B. 1318b700e415 ) ist die eindeutige Kennung des Ubuntu-Images.

5. Container ausführen

Ein Container kann entweder mit dem Image-Tag oder der Image-ID gestartet werden.

Lassen Sie uns einen neuen Container mit dem Redhat UBI-Image mit seinem Tag starten:

$ podman run -it ubi8:latest

Dieser Befehl erstellt einen Redhat 8-Container mit ubi8:latest image und verbindet den Container mit dem Terminal, damit Sie damit interagieren können.

Hier,

  • -i : Ermöglicht es uns, eine interaktive Verbindung herzustellen, indem wir den Standard in (STDIN) des Containers abrufen.
  • -t :Weist ein neues Pseudo-Terminal innerhalb des Redhat 8-Containers zu.
  • ubi8:latest :Redhat 8-Container mit TAG "neueste".

Nach dem Start des Containers landen Sie automatisch in der Shell des Containers (Eingabeaufforderung):

Haben Sie die Nummer 607a288c810d bemerkt? in der obigen Ausgabe? Es ist die Container-ID.

Vorsicht: Bitte beachten Sie, dass Container-ID und Docker-Image-ID unterschiedlich sind .

Sie können jetzt mit Ihrem Container spielen.

Um zum Terminal Ihres Hosts zurückzukehren, ohne den Container zu verlassen, drücken Sie CTRL+p gefolgt von CTRL+q .

Jetzt werden Sie vom Container getrennt und zur Konsole des Hostcomputers zurückgebracht. Der Container wird weiterhin im Hintergrund ausgeführt.

Um den Container zu verlassen, geben Sie einfach exit ein aus der Container-Konsole und drücken Sie die EINGABETASTE:

# Ausfahrt

Dieser Befehl beendet den laufenden Container.

Wenn Sie einen Container mit der IMAGE-ID ausführen möchten, ersetzen Sie im vorherigen Befehl einfach das Image-TAG (ubi8:latest) durch die Image-ID (0ced1c7c9b23):

$ podman run -it 0ced1c7c9b23

Dadurch wird der Redhat 8-Container gestartet.

6. Container im Hintergrund ausführen

Sie können Container auch losgelöst im Hintergrund ausführen.

Um einen Container im getrennten Modus auszuführen, verwenden wir -d Flagge:

$ podman run -it -d ubi8:latest

Wenn wir den Container im getrennten Modus ausführen, zeigt Podman die Container-ID in der Standardausgabe an.

a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29

Lassen Sie uns die laufenden Container mit dem Befehl:

überprüfen
$ podman ps

Jetzt läuft der Container im Hintergrund.

Sie können ihn wie im folgenden Abschnitt beschrieben anhängen.

7. Anbringen und Abnehmen von Behältern

Wie im vorherigen Abschnitt erwähnt, können Sie sich sicher von einem laufenden Container trennen, indem Sie CTRL+p drücken gefolgt von CTRL+q . Dadurch können Sie zum Terminal des Hosts zurückkehren.

Um sich wieder an den Container anzuhängen, suchen Sie zuerst die laufende Container-ID oder ihren Namen mit podman ps Befehl:

$ podman ps

Beispielausgabe:

CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTNAMEN607a288c810d docker.io/redhat/ubi8:latest /bin/bash vor 2 Stunden Up vor 2 Stunden cool_cannon

Hier, 607a288c810d ist die Container-ID.

Und dann geben Sie einfach podman attach ein Befehl gefolgt von der Container-ID wie unten:

$ podman hängt 607a288c810d an

Sie können es auch mit dem Containernamen wie unten anhängen:

$ podman hängt coole_kanone an

Um sich vom Container zu trennen, drücken Sie einfach CTRL+p und CTRL+q .

8. Laufende Container anzeigen

Geben Sie Folgendes ein, um die ausgeführten Container zu finden oder aufzulisten:

$ podman ps

Beispielausgabe:

CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMESe783c0202b7d docker.io/library/alpine:latest /bin/sh vor 37 Sekunden Up vor 38 Sekunden optimistic_murdock

Dadurch werden nur die laufenden Container aufgelistet. Wenn Sie sowohl laufende als auch gestoppte Container auflisten möchten, verwenden Sie -a Flagge.

$ podman ps -a

Beispielausgabe:

CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMEN56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash vor 3 Stunden Beendet (0) vor 3 Stunden wizardly_albattanid23672b15cff docker.io/redhat/ubi8:latest /bin/bash vor 3 Stunden Beendet (0) vor 3 Stunden nifty_merkle89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash vor 3 Stunden Beendet (0) vor 2 Stunden xenodochial_euler607a288c810d docker.io/redhat/ubi8:latest /bin/bash vor 2 Stunden Beendet (0) vor etwa einer Minute cool_cannone783c0202b7d docker.io/library/alpine:latest /bin/sh vor 43 Sekunden Hoch vor 43 Sekunden optimistic_murdock

9. Container nach dem Schließen automatisch löschen

Vielleicht möchten Sie einen Container testen und ihn einfach löschen, sobald Sie mit dem Container fertig sind. In diesem Fall können Sie den Container nach dem Schließen automatisch löschen, indem Sie --rm verwenden Flagge:

$ podman run -it --rm ubi8:latest

Sobald Sie den Container verlassen, wird er automatisch gelöscht.

10. Container starten und stoppen

Wie bereits erwähnt, können wir mehrere Container mit demselben Image erstellen. Dies ist einer der größten Vorteile von Containern im Vergleich zu physischen oder virtuellen Maschinen.

Um mehrere neue Container zu erstellen, können wir den podman run verwenden wie unter "5. Container ausführen" beschrieben Abschnitt.

Um einen bestehenden Container zu starten (einzuschalten), machen wir einfach:

$ podman starte 

Auf ähnliche Weise können wir einen laufenden Befehl mit dem Befehl stoppen (ausschalten):

$ podman stop 

Lass mich dir ein Beispiel zeigen, damit du es besser verstehst.

Suchen Sie zuerst die Liste aller Container:

$ podman ps -a CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMEN 56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash vor 2 Tagen Beendet (0) vor 2 Tagen wizardly_albattani d23672b15cff docker.io/redhat/ubi8:latest /bin/bash vor 2 Tagen Beendet (0) vor 2 Tagen nifty_merkle 89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash vor 2 Tagen Beendet (0) vor 2 Tagen xenodochial_euler 607a288c810d docker.io/redhat/ubi8:latest /bin/bash vor 2 Tagen Beendet (0) vor 2 Tagen cool_cannon e783c0202b7d docker.io/library/alpine:latest /bin/sh vor 2 Tagen Beendet (0) vor 2 Tagen optimistic_murdock 

Die Namen der Container werden in den NAMEN angezeigt Abschnitt (letzte Spalte) der obigen Ausgabe.

Ich werde den Container namens wizardly_albattani starten mit Befehl:

$ podman start Wizardly_albattani

Lassen Sie uns überprüfen, ob es gestartet wurde:

$ podman ps CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMEN56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash vor 2 Tagen Up vor 7 Sekunden wizardly_albattani 

Ja, es war vor 7 Sekunden.

Um den Container zu stoppen, tun Sie einfach:

$ podman stoppt Wizardly_albattani

11. Containern Namen zuweisen

Wenn Sie sich die Ausgabe früherer Befehle genau ansehen, vergibt Podman jedes Mal, wenn Sie einen Container starten, zufällige Namen. Wenn Sie Ihre Container nicht benennen, wird Podman sie automatisch für Sie benennen.

Sehen Sie sich den folgenden Screenshot an. Ich habe den gleichen Container zweimal mit dem gleichen Image gestartet. Nachdem ich den Container beendet und beim zweiten Mal neu gestartet habe, erhält er einen neuen Namen, auch wenn ich dasselbe Bild verwendet habe.

Die Container erhalten jedes Mal einen neuen Namen, nachdem wir sie geschlossen und jedes Mal gestartet haben.

Sie können den Containern aber mit --name einen statischen Namen zuweisen Flagge wie unten:

$ podman run -it -d --name ostechnix_redhat ubi8:latest

Der obige Befehl erstellt einen neuen Container im getrennten Modus und nennt ihn ostechnix_redhat .

Um die Liste der laufenden Container anzuzeigen, machen wir:

$ podman ps

Beispielausgabe:

CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMEN6fa78116dcb7 docker.io/redhat/ubi8:latest /bin/bash vor 4 Sekunden Up vor 5 Sekunden ostechnix_redhat 

Haben Sie den Namen des Containers bemerkt? Wir haben einen benutzerdefinierten Namen vergeben (z. B. ostechnix_redhat ) in den Container.

12. Erstellen Sie benutzerdefinierte Bilder

Podman dient nicht nur zum Herunterladen und Ausführen von Containern aus vorkonfigurierten Images. Sie können Ihre benutzerdefinierten Bilder auch aus vorhandenen Bildern erstellen.

Starten Sie zunächst einen vorhandenen Container oder führen Sie einen neuen aus.

Ich werde einen neuen Ubuntu-Container erstellen:

$ podman run -it 1318b700e415

Jetzt befinden Sie sich im Container.

[E-Mail-geschützt]:/#

Installieren, aktualisieren oder entfernen Sie einfach alle Anwendungen im Container.

Für die Zwecke dieser Anleitung werde ich den Apache-Webserver installieren:

[email protected]:/# apt update
[email protected]:/# apt install apache2 -y
[email protected]:/# service apache2 start

Wenn Sie fertig sind, trennen Sie sich vom Container und kehren Sie zum Terminal des Hosts zurück, indem Sie CTRL+p drücken und CTRL+q .

Bitte beachten Sie, dass der Container noch im Hintergrund läuft!

Erstellen Sie nun das Image aus dem vorhandenen Container mit dem Befehl:

$ podman commit b871b0fd5810 ostechnix/ubuntu_apache

Hier,

  • b871b0fd5810 - Ubuntu-Container-ID.
  • ostechnix – Name des Benutzers, der den Container erstellt hat.
  • ubuntu_apache – Name des vom Benutzer ostechnix erstellten Images.

Überprüfen Sie nun, ob das neue Bild erstellt wurde, indem Sie die verfügbaren Bilder auflisten:

$ Podman-Bilder

Beispielausgabe:

REPOSITORY-TAG-BILD-ID ERSTELLTE GRÖSSElocalhost/ostechnix/ubuntu_apache neustes 6c9b2fb66400 vor 25 Sekunden 222 MB docker.io/library/ubuntu 20.04 1318b700e415 vor 10 Tagen 75,2 MBdocker.io/redhat/ubi8 neu 0ced1c7c9b23 vor 2 Wochen 234 MBdocker.io/library/alpine neu d4ff818577bc vor 7 Wochen 5,87 MB

Wie Sie in der obigen Ausgabe sehen, wird ein neues Bild namens ubuntu_apache erstellt.

Beginnen wir einen neuen Container mit diesem Bild:

$ podman run -it --rm --name apache_webserver -p 8080:80 localhost/ostechnix/ubuntu_apache

Hier führe ich Container mit neu erstelltem Image im vorherigen Schritt aus. Ich bilde auch den lokalen Port 8080 ab auf dem lokalen System auf Port 80 im Behälter.

Stellen Sie nach dem Start des Containers sicher, dass der Apache-Webserver mit folgendem Befehl gestartet wird:

[email protected]:/# service apache2 start

Öffnen Sie nun Ihren Browser in Ihrem Hostsystem und navigieren Sie zu http://localhost:8080 um zu überprüfen, ob der Apache-Webserver im Container läuft.

13. Containerprotokolle anzeigen

Um alles anzuzeigen, was Sie in Ihrem Container getan haben, können Sie einfach die Protokolle des Containers mit dem folgenden Befehl überprüfen:

$ podman protokolliert apache_webserver

14. Behälter entfernen

Stellen Sie sicher, dass der Container gestoppt ist:

$ podman stop ostechnix_redhat

Nachdem Sie den Container gestoppt haben, löschen Sie ihn mit dem Befehl:

$ podman rm ostechnix_redhat

Löschen Sie auf ähnliche Weise alle Container nacheinander, wie oben gezeigt.

Das Löschen mehrerer Container nacheinander kann eine mühsame Aufgabe sein, wenn Sie eine große Anzahl von Containern haben. Anstatt einen nach dem anderen zu löschen, können Sie alle auf einmal löschen. Sei einfach vorsichtig! Gelöschte Container können nicht wiederhergestellt werden!

Um alle angehaltenen Container auf einmal zu löschen, führen Sie einfach Folgendes aus:

$ podman container prune

Geben Sie "Y" ein zu bestätigen und ENTER zu drücken Taste, um die Container zu löschen.

WARNUNG! Dadurch werden alle nicht ausgeführten Container entfernt. Möchten Sie wirklich fortfahren? [j/N] j 2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e489b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7ed23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0 

15. Bilder entfernen

Nicht mehr benötigte Bilder können Sie löschen!

Listen Sie alle heruntergeladenen Bilder mit dem Befehl auf:

$ Podman-Bilder

Beispielausgabe:

REPOSITORY TAG BILD-ID ERSTELLT GRÖSSElocalhost/ostechnix/ubuntu_apache neuste 6c9b2fb66400 vor 37 Minuten 222 MBdocker.io/library/ubuntu 20.04 1318b700e415 vor 10 Tagen 75,2 MBdocker.io/redhat/ubili8 neuste 0ced1c7c9b23 vor 2docker.io/4docker.io/vor 2 Wochen /alpine neuste d4ff818577bc vor 7 Wochen 5,87 MB

Löschen Sie nun ein Bild entweder anhand seiner Bild-ID oder seines Namens, wie unten:

$ podman rmi 6c9b2fb66400

Beispielausgabe:

Untagged:localhost/ostechnix/ubuntu_apache:latestDeleted:6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d

Löschen Sie auf ähnliche Weise alle anderen nicht verwendeten Bilder,

Vorsicht: Sie können kein Image löschen, das derzeit von laufenden oder angehaltenen Containern verwendet wird.

Schlussfolgerung

In diesem umfassenden Podman-Tutorial haben wir 15 praktische Beispiele für die ersten Schritte mit Podman unter Linux bereitgestellt. Wenn Sie ein Entwickler sind, ist das Erlernen von Podman sehr wichtig, um Ihre Karriere voranzutreiben. Lernen Sie, Podman gründlich zu verwenden. Es lohnt sich!


Linux
  1. Beginnen Sie mit NetworkManager unter Linux

  2. Wie fange ich mit Juju an?

  3. Erste Schritte mit einem FreeBSD-Cloud-Server

  4. Beginnen Sie mit Tasksel unter Debian

  5. Beginnen Sie mit Latex unter Linux

Erste Schritte mit Docker Compose unter Linux

Von Docker Compose zu Kubernetes mit Podman

So ersetzen Sie Docker durch Podman auf einem Mac

Tutorial „Erste Schritte mit Azure Docker“.

Erste Schritte mit Arch Linux

Erste Schritte mit Midnight Commander im Jahr 2022