So verwalten Container mit Podman und Skopeo in RHEL 8

So verwalten Container mit Podman und Skopeo in RHEL 8

Eine der Herausforderungen, mit der Entwickler in der Vergangenheit konfrontiert waren. Oft wurden Bewerbungen nicht wie erwartet oder auf Fehler ausgeführt und sind insgesamt fehlgeschlagen. Und dort das Konzept von Behälter wurde geboren.

Was sind Containerbilder?

Container Bilder sind statische Dateien, die mit ausführbarem Code versandt werden, der in einer isolierten Umgebung ausgeführt wird. Ein Containerbild umfasst Systembibliotheken, Abhängigkeiten und andere Plattformeinstellungen, die von der Anwendung benötigt werden, um in verschiedenen Umgebungen auszuführen.

Red Hat Linux Bietet eine Reihe nützlicher Container -Tools, die Sie nutzen können, um direkt mit Linux -Containern zu arbeiten, indem Sie Docker -Befehle benötigen. Diese beinhalten:

  • Podman - Dies ist ein Dämon weniger Containermotor zum Laufen und Verwalten OCI Container entweder im rootlosen oder im rootlosen Modus. Podman ist ähnlich wie Docker und hat die gleichen Befehlsoptionen außer dem Docker ist ein Daemon. Sie können Containerbilder mitziehen, ausführen und verwalten Podman in ähnlicher Weise wie Sie mit Docker. Podman Kommt mit vielen fortschrittlichen Funktionen, integriert sich vollständig in Systeme, und bietet Benutzernamenspace -Support, das Ausführen von Containern umfasst, ohne dass ein Root -Benutzer erforderlich ist.
  • SKOPEO: Dies ist ein Befehlszeilen-Tool, das zum Kopieren von Containerbildern von einer Registrierung zur anderen verwendet wird. Sie können verwenden SKOPEO Bilder in und von einem bestimmten Host zu kopieren sowie Bilder in eine andere Containerregistrierung oder -umgebung zu kopieren. Neben dem Kopieren von Bildern können Sie es verwenden, um Bilder aus verschiedenen Registern zu inspizieren und Signaturen zu verwenden, um Bilder zu erstellen und zu überprüfen.
  • Buildah: Dies ist eine Reihe von Befehlszeilen-Tools, die zum Erstellen und Verwalten von Containern verwendet werden OCI Bilder verwenden Docker Dateien.

In diesem Artikel werden wir uns auf die Verwaltung von Containern konzentrieren Podman Und SKOPEO.

Suchen Sie Containerbilder aus einer Remote -Registrierung

Der Podman -Suche Mit dem Befehl können Sie ausgewählten Remote -Registern nach Containerbildern durchsuchen. Die Standardliste der Registrien ist in der definiert Registrien.Conf Datei in der /etc/container/ Verzeichnis.

Die Registrien sind durch 3 Abschnitte definiert.

  • [Register.suchen] - Dieser Abschnitt gibt die Standardregister an, die Podman kann nach Containerbildern suchen. Es sucht nach dem angeforderten Bild in der Registrierung.Zugang.roter Hut.com, Registrierung.roter Hut.io, Und Docker.io Registrien.
Standardregister
  • [Register.unsicher]- In diesem Abschnitt werden Registrierungen angegeben, die keine TLS -Verschlüsselung implementieren i.E unsichere Registrierungen. Standardmäßig werden keine Einträge angegeben.
Unsichere Register
  • [Register.Block] - Dies blockiert oder verweigert den Zugriff auf die angegebenen Register von Ihrem lokalen System. Standardmäßig werden keine Einträge angegeben.
Blöcke Register

Als regulär (nicht gerooted) Benutzer, der den Befehl Podman ausführt, können Sie Ihre eigenen definieren Registrien.Conf Datei in Ihrem Heimverzeichnis ($ Home/.Konfiguration/Container/Register.Conf) systemweite Einstellungen überschreiben.

Regeln bei der Angabe von Registern

Beachten Sie, wie Sie die Registrien angeben, folgendermaßen:

  • Jede Registrierung sollte von einzelnen Zitaten eingeschlossen sein.
  • Registrien können entweder mit einem Hostnamen oder einer IP -Adresse angegeben werden.
  • Wenn mehrere Register angegeben sind, sollten sie durch Kommas getrennt werden.
  • Wenn eine Registrierung einen nicht standardmäßigen Anschluss verwendet - entweder Port -TCP -Ports 443 für sichere und 80 für Unsicherheit, sollte die Portnummer neben dem Registrierungsnamen e angegeben werden.G. Registrierung.Beispiel.com: 5566.

So durchsuchen Sie eine Registrierung nach einem Containerbild mit der Syntax:

# Podman Search Registry/Container_image 

Zum Beispiel nach einem suchen Redis Bild in der Registrierung.roter Hut.io Registrierung, rufen Sie den Befehl auf:

# Podman -Suchregister.roter Hut.IO/Redis 
Suchregistrierung für Containerbild

Nach einem zu suchen Mariadb Containerbildlauf.

# Podman -Suchregister.roter Hut.IO/Mariadb 
Suche nach Mariadb -Containerbild

Verwenden Sie die aufwändige Beschreibung eines Containerbildes --NO TRUNC Option vor dem Namen des Containerbildes aus den Ergebnissen, die Sie erhalten. Zum Beispiel werden wir versuchen, eine detaillierte Beschreibung des Mariadb -Containerbildes wie gezeigt zu erhalten:

# Podman Search-No-Trunc-Registrierung.roter Hut.io/rhel8/mariadb-103 
Listen Sie die Beschreibung des Mariadb -Containerbildes auf

Ziehen Sie Containerbilder

Um Containerbilder aus einer Remote -Registrierung zu ziehen oder abzurufen. Zum Beispiel zum Abrufen des Mariadb -Containerbildes melden Sie sich zunächst bei der Redhat -Registrierung an:

# Podman Login 

Geben Sie Ihren Benutzernamen und Ihr Passwort an und klicken SieEINGEBEN'Auf Ihrer Tastatur. Wenn alles gut geht, sollten Sie eine Bestätigungsnachricht erhalten, dass die Anmeldung in der Registrierung erfolgreich war.

Login gelang! 

Jetzt können Sie das Bild mit der gezeigten Syntax ziehen:

# Podman Pull [:]/[/]: 

Der Bezieht sich auf den Remote -Host oder die Remote -Registrierung, die ein Repository von Containerbildern auf der TCP liefert . Der und das Geben Sie gemeinsam ein Containerbild an, basierend auf dem im Register. Endlich, das Die Option gibt die Version des Containerbildes an. Wenn keine angegeben ist, wird das Standard -Tag - neuest - verwendet.

Es wird immer empfohlen, vertrauenswürdige Registrien hinzuzufügen, dh die Verschlüsselung und nicht zulassen, dass anonyme Benutzer Konten mit zufälligen Namen hervorrufen.

Führen Sie den Befehl aus, um das Mariadb -Bild zu ziehen:

# Podman Pull Registry.roter Hut.io/rhel8/mariadb-103 
  • Der - Registrierung.roter Hut.io
  • Der - rhel8
  • Der - Mariadb
  • Der - 103
MARIADB -Bild ziehen

Für nachfolgende Containerbilder ziehen Sie keine weitere Anmeldung ein, da Sie bereits authentifiziert sind. Zu ziehen a Redis Containerbild, einfach ausführen:

# Podman Pull Registry.roter Hut.IO/RHSCL/Redis-5-RHEL7 
RETIS -Containerbild ziehen

Containerbilder auflisten

Sobald Sie mit dem Ziehen der Bilder fertig sind, können Sie die derzeit auf Ihrem Host vorhandenen Bilder anzeigen, indem Sie den Befehl Podman Images ausführen.

# Podman -Bilder 
Listen Sie Containerbilder auf

Behälterbilder inspizieren

Vor dem Ausführen eines Containers ist es immer eine gute Idee, das Bild zu untersuchen und zu verstehen, was es tut. Der Podman inspizieren Befehl druckt ein Meer von Metadaten über den Container wie das Betriebssystem und die Architektur aus.

Um ein Bild zu inspizieren, führen Sie die aus Podman inspizieren Befehl gefolgt von der Bild -ID oder dem Repository.

# Podman -Bild -ID oder # Podman Inspect Repository inspizieren 

Im folgenden Beispiel inspizieren wir die Mariadb Container.

# Podman Inspect Registry.roter Hut.io/rhel8/mariadb-103 
Inspizieren von Mariadb -Containerbildern

Um bestimmte Metadaten für einen Container zu ziehen, passieren die --Format Option gefolgt von den Metadaten und der Containeridentität (Bild -ID oder Name).

Im folgenden Beispiel finden wir Informationen über die Architektur und Beschreibung des RHEL 8 -Basiscontainers, der unter die '' fälltEtiketten' Abschnitt.

# Podman inspect -format = '.Etiketten.Architektur 'Bild -ID # Podman Inspect --Format =' .Etiketten.Beschreibung 'Bild -ID 
Holen Sie sich Informationen über die Containerarchitektur

Verwenden Sie die, um ein Fernbild aus einer anderen Registrierung zu inspizieren, die Skopeo inspizieren Befehl. Im folgenden Beispiel inspizieren wir ein RHEL 8 -Init -Bild, das auf veranstaltet wird Docker.

# Skopeo inspizieren Sie Docker: // Registrierung.roter Hut.io/rhel8-beta/rhel-init 
Überprüfen Sie das Remote -Image aus Docker Registry

Etiketten von Containerbildern

Wie Sie vielleicht bemerkt haben, sind Bildnamen normalerweise generisch von Natur. Zum Beispiel ist das Redis -Bild mit der Bezeichnung:

Registrierung.roter Hut.IO/RHSCL/Redis-5-RHEL7 

Etiketten Bilder geben ihnen einen intuitiveren Namen, um besser zu verstehen, was sie enthalten. Verwendung der Podman -Tag Befehl, Sie können ein Bild -Tag erstellen, das im Wesentlichen ein Alias ​​zu einem Bildnamen ist, der verschiedene Teile umfasst.

Diese sind:

Registrierung/Benutzername/Name: Tag 

Zum Beispiel, um den generischen Namen des Redis -Bildes zu ändern, das eine ID von hat 646F2730318c , Wir werden den Befehl ausführen:

# Podman Tag 646F2730318c MyRedis 

Um am Ende ein Tag hinzuzufügen, wenden Sie sich an einen vollständigen Dickdarm, gefolgt von der Tag -Nummer:

# Podman Tag 646F2730318C MyRedis: 5.0 

Ohne die Tag -Nummer hinzuzufügen, wird das Attribut nur zugewiesen.

Setzen Sie den Namen für Redis -Containerbild

Ausführen von Containerbildern

Verwenden Sie das Behälter, um einen Container auszuführen, die Podman Run Befehl. Zum Beispiel:

# Podman Run Image_id 

Um einen Container lautlos im Hintergrund als Daemon -Service auszuführen, verwenden Sie die -D Option wie gezeigt.

# Podman Run -d Image_id 

Zum Beispiel um das auszuführen Redis Bild mit ID 646F2730318c, Wir werden den Befehl aufrufen:

# Podman Run -d 646F2730318c 
Führen Sie Redis -Containerbilder aus

Wenn Sie einen Container basierend auf einem Betriebssystem wie zum Beispiel ausführen Rhel 8 Basisbild können Sie mit dem Zugriff auf die Schale erhalten -Es Richtlinie. Der -ich Die Option erstellt eine interaktive Sitzung, während die -T Erbringt eine Terminalsitzung. Der --Name Die Option legt den Containernamen auf MyBash Während ist das ECBC6F53BBA0 Bild -ID des Basisbildes.

# Podman Run -it --Name = MyBash ECBC6F53BBA0 

Danach können Sie alle Shell -Befehle ausführen. Im folgenden Beispiel überprüfen wir die OS -Version des Containerbildes.

# Cat /etc /os-Release 
Überprüfen Sie die Containerbild -Betriebssystemversion

Um den Container zu beenden, rufen Sie einfach den Befehl zum Ausgang auf.

# Ausfahrt 

Sobald der Container beendet ist, stoppt er automatisch. Verwenden Sie den Container, um den Container erneut zu starten Podman -Start Befehl mit dem -ai Flagge wie gezeigt.

# Podman Start -ai mybash 

Dies erhalten Sie hier erneut Zugriff auf die Schale.

Containerbilder starten

Auflistung laufender Containerbilder

Verwenden Sie die derzeit ausgeführten Containern, um die derzeit ausgeführten Container aufzulisten, die Podman PS Befehl wie gezeigt.

# Podman PS 
Liste laufende Containerbilder

Verwenden Sie den Befehl, um alle Container einschließlich derjenigen anzuzeigen, die nach dem Laufen beendet sind:

# Podman PS -a 
Alle Containerbilder anzeigen

Konfigurieren Sie Containerbilder für automatische Start unter dem Systemd Service

In diesem Abschnitt konzentrieren wir uns darauf, wie ein Container so konfiguriert werden kann, dass er direkt auf einem RHEL -System als Systemd -Dienst ausgeführt wird.

Holen Sie sich zunächst Ihr bevorzugtes Bild. In diesem Fall haben wir das gezogen Redis Bild von Docker Hub:

# Podman Pull Docker.IO/Redis 

Wenn Sie Selinux auf Ihrem System laufen lassen, müssen Sie die aktivieren Container_Manage_CGroup boolesche, um Behälter mit zu laufen systemd.

# SetSbool -p Container_Manage_CGroup auf 

Führen Sie danach das Containerbild im Hintergrund aus und weisen Sie es Ihrem bevorzugten Bildnamen zu. In diesem Beispiel haben wir unser Bild benannt Redis_Server und kartierte den Hafen 6379 vom Behälter zu unserem Rhel 8 Gastgeber

# Podman Run -d --Name Redis_Server -P 6379: 6379 Redis 
Führen Sie das Containerbild im Hintergrund aus

Als nächstes werden wir eine erstellen systemd Einheitskonfigurationsdatei für Redis in der /etc/systemd/system/ Verzeichnis.

# vim/etc/systemd/system/redus-container.Service 

Fügen Sie den folgenden Inhalt in die Datei ein.

[Einheit] Beschreibung = Redis -Container [Service] restart = immer execstart =/usr/bin/podman start -a redis_server execstop =/usr/bin/podman stop -t 2 redis_server [install] suchtby = local.Ziel 

Speichern und beenden Sie die Datei.

Konfigurieren Sie als Nächstes den Container, um automatisch mit dem Bootup zu starten.

# SystemCTL aktivieren Redis-Container.Service 

Starten Sie als nächstes den Container und überprüfen Sie den laufenden Status.

# Systemctl Start Redis-Container.Service # SystemCtl Status Redis-Container.Service 
Überprüfen Sie den Status des Containerbildes

Konfigurieren Sie den anhaltenden Speicher für Containerbilder

Beim Ausführen von Containern ist es ratsam, einen anhaltenden externen Speicher auf dem Host zu konfigurieren. Dies liefert eine Sicherung, falls der Container abstürzt oder versehentlich entfernt wird.

Um die Daten zu bestehen.

$ podman run -privilegierte -it -v/var/lib/container/backup_storage:/mnt Registrierung.roter Hut.io/ubi8/ubi/bin/bash 

Der --privilegiert Option wird übergeben, wenn Selinux ist auf die Durchsetzung eingestellt. Der -v Die Option gibt den externen Volumen an, der sich auf dem Host befindet. Das Containervolumen hier ist das /mnt Verzeichnis.

Sobald wir auf die Shell zugegriffen haben, werden wir eine Beispieldatei erstellen testen.txt im /mnt Verzeichnis wie gezeigt.

$ echo "Dieser testet anhaltender externer Speicher"> /mnt /testing.txt 

Wir werden dann Ausfahrt Der Container und überprüfen, ob die Datei im externen Speicher auf dem Host vorhanden ist

# Beenden Sie # cat/var/lib/container/backup_storage/testing.txt 

AusgangDies testet anhaltender externer Speicher.

Konfigurieren Sie den anhaltenden Speicher für Container

Behälter anhalten und entfernen

Sobald Sie mit dem Ausführen Ihres Containers fertig sind, können Sie ihn mit dem stoppen Podman Stop Befehl gefolgt von dem Container-ID was Sie von der erhalten können Podman PS Befehl.

# Podman Stop Container-ID 
Behälterbild stoppen

Um die Behälter zu entfernen, die Sie nicht mehr benötigen, stellen Sie zuerst sicher, dass Sie sie stoppen und dann die aufrufen Podman RM Befehl gefolgt von der Container -ID oder dem Namen als Option.

# Podman RM Container-ID 

Geben Sie den Container an, um mehrere Behälter bei einem Befehl zu entfernen, um einen Befehl zu entfernen IDS durch einen Raum getrennt.

# Podman RM Container-ID-1-Container-ID-2-Container-ID-3 
Behälterbild entfernen

Führen Sie den Befehl aus, um alle Ihre Container zu löschen:

# Podman RM -a 
Alle Behälter löschen

Ein Bild entfernen

Um ein Bild zu entfernen, stellen Sie zunächst sicher, dass alle von den Bildern hervorgebrachten Behälter gestoppt und entfernt werden, wie im vorherigen Sub-Topic erläutert.

Als nächstes fahren Sie fort und führen Sie den Podman aus -RMI Befehl gefolgt von der ID des Bildes wie gezeigt:

# Podman -rmi Bild -id 
Entferne Bild

Abschluss

Dies beendet dieses Kapitel über das Management und die Arbeit mit Containern in Rhel 8. Wir hoffen Rhel System verwendet Podman Und SKOPEO.