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

So installieren Sie Podman unter Debian 11

Podman wurde von RedHat entwickelt und ist eine kostenlose und daemonlose Open-Source-Container-Engine, die als direkter Ersatz für die beliebte Docker-Laufzeit-Engine konzipiert ist. Genau wie Docker erleichtert es das Erstellen, Ausführen, Bereitstellen und Freigeben von Anwendungen mithilfe von Container-Images und OCI-Containern ( Open Container Initiative ). Podman verwendet Benutzer- und Netzwerk-Namespaces und gilt im Vergleich zu Docker als isolierter und sicherer. Die meisten Befehle in Docker funktionieren in Podman. Wenn Sie also mit der Ausführung von Docker-Befehlen vertraut sind, wird die Verwendung von podman so ein Kinderspiel sein.

In dieser Anleitung lernen wir, wie man podman installiert auf Debian 11 Volltreffer.

Podman unter Debian 11 installieren

Die Podman-Pakete, -Bibliotheken und -Abhängigkeiten werden bereits in den offiziellen Debian-Repositories gehostet. Daher können Sie podman einfach mit dem APT-Paketmanager installieren.

Aktualisieren Sie zuerst die Paketlisten:

$ sudo apt update

Installieren Sie als Nächstes die Podman-Container-Engine wie folgt:

$ sudo apt install podman

Wenn Sie zum Fortfahren aufgefordert werden, geben Sie „Y“ ein und drücken Sie die EINGABETASTE.

Um die installierte Version von Podman zu überprüfen, führen Sie Folgendes aus:

$ podman --version

Führen Sie den folgenden Befehl aus, um weitere Details über die Podman-Container-Engine zu erhalten:

$ sudo podman info

Sie sollten eine Flut von Ausgaben sehen, die komplizierte Details anzeigen, wie z. B. das, was wir unten haben.

Konfigurieren Sie die Podman-Registrierungen

Die Registrierungsdatei registry.conf ist eine Konfigurationsdatei, die die zu verwendenden Containerregistrierungen angibt, wenn Sie ein Image per Push oder Pull übertragen möchten. Der vollständige Pfad zur Datei lautet /etc/containers/registries.conf . Es gibt verschiedene Containerregistrierungen, darunter Docker Hub, Quay.io, RedHat und viele mehr.

Sie können die Datei wie gezeigt mit Ihrem Texteditor anzeigen

# sudo /etc/containers/registries.conf

In Docker ist Docker Hub die einzige Containerregistrierung. Podman bietet Benutzern mehr Freiheit beim Suchen und Abrufen von Bildern aus jeder Registrierung. Sie können die Liste der Containerregistrierungen definieren, indem Sie die folgende Zeile hinzufügen.

unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']

Beim Ausführen der podman search oder podman pull Befehl, wird podman diese Registrierungen beginnend mit der ersten in dieser Reihenfolge kontaktieren. Speichern Sie die Änderungen und beenden Sie die Datei.

Bilder suchen

Bevor Sie Container-Images ziehen, ist es ratsam, in verschiedenen Registrierungen nach ihrer Verfügbarkeit zu suchen.

Zum Beispiel

$ sudo podman search nginx

Die Ausgabe zeigt Ihnen eine Fülle von Informationen, darunter den Registrierungsnamen, den Bildnamen und eine kurze Beschreibung.

Anmelden bei einer Registrierung

Bevor Sie mit dem Pullen oder Pushen von Images beginnen, müssen Sie sich bei einer Registrierung anmelden. Im folgenden Beispiel melde ich mich bei meinem Redhat-Konto an, wodurch ich tatsächlich auf die Registrierung zugreifen kann.

$ sudo podman login registry.access.redhat.com

Um sich von der Registrierung abzumelden, führen Sie den folgenden Befehl aus:

$ sudo podman logout registry.access.redhat.com

Bild abrufen

Um ein Bild abzurufen, verwenden Sie die Syntax:

$ sudo podman pull image_name

Um beispielsweise die offiziellen Build-Images von Nginx abzurufen, führen Sie den folgenden Befehl aus:

$ sudo podman pull docker.io/library/nginx

Lassen Sie uns versuchen, ein anderes Bild zu ziehen. Wir ziehen das offizielle MongoDB-Image wie folgt.

$ sudo podman pull docker.io/library/mongo

Auflisten eines Bildes

Um alle Bilder aufzulisten, führen Sie den Befehl aus.

$ sudo podman images

Container aus einem Bild erstellen

Nachdem sich unsere Images nun auf dem Debian-System befinden, können wir einen Container mit der gezeigten Syntax starten. Die Option -d führt den Container im Hintergrund aus und den --name Option gibt einen benutzerdefinierten Namen für den Container an

$ sudo podman run -d  --name container_name  image

Um beispielsweise einen Container namens webserv1 aus dem Nginx-Image im Hintergrund zu starten, führen Sie den folgenden Befehl aus:

$ sudo podman run  -d --name webserv1 docker.io/library/nginx

Sie können mehrere Container aus demselben Image starten. Lassen Sie uns einen weiteren Container namens webserv2 aus demselben Nginx-Image starten.

$ sudo podman run -d --name webserv2  docker.io/library/nginx

Container auflisten

In diesem Abschnitt sehen wir uns verschiedene Befehle an, die Sie mit Containern verwenden können.

Um die derzeit laufenden Container zu überprüfen, geben Sie den folgenden Befehl ein:

$ sudo podman ps

Die Ausgabe wird in Spalten dargestellt, die Informationen wie Container-ID, IMAGE-Name, den Befehl, der den Container ausführt, Erstellungsdatum und Status enthalten.

Um alle Container aufzulisten, einschließlich derjenigen, die beendet wurden, führen Sie Folgendes aus:

$ sudo podman ps -a

Stoppen eines Containers

Um einen Container zu stoppen, verwenden Sie die Syntax

$ sudo podman stop CONTAINER_ID

ODER

$ sudo podman stop container_name

Im Beispiel unten habe ich den ersten aufgelisteten Container anhand seiner Container-ID gestoppt

$ sudo podman stop 9daeaabdfdfc

Sie können mit podman ps überprüfen, ob der Container gestoppt wurde Befehl. Wir können deutlich sehen, dass nach dem Stoppen des Bildes nur noch 1 Bild läuft.

Der podman ps -a Der Befehl listet beide Container auf, die den gerade gestoppten Container enthalten.

$ sudo podman ps -a

Starten eines Containers

Verwenden Sie zum Starten eines Containers die Syntax:

$ sudo podman start CONTAINER_ID

ODER

$ sudo podman start container_name

Um beispielsweise webserv1 zu starten, führen Sie Folgendes aus:

$ sudo podman start webserv1

Greifen Sie auf die Shell eines Containers zu

Der Zugriff auf die Shell eines Containers lässt sich am besten anhand eines Containers eines Betriebssystems demonstrieren.

Hier werden wir ein Ubuntu-Image herunterladen oder ziehen:

$ sudo podman pull docker.io/library/ubuntu

Aus dem Image erstellen oder starten wir einen Container und erhalten mithilfe von -it Zugriff auf die Shell Option.

$ sudo podman run --name ubuntu -it docker.io/library/ubuntu  /bin/bash
  • -i, –interactive STDIN offen halten, auch wenn es nicht angehängt ist
  • -t, –tty Weist ein Pseudo-TTY zu. Der Standardwert ist falsch

Überprüfen Sie die Protokolle eines Containers

Um die Protokolle eines Containers zu überprüfen, verwenden Sie die Syntax:

$ sudo podman logs container_name

Zum Beispiel:

$ sudo podman logs webserv2

Containerstatistik anzeigen

Um die Statistiken aller laufenden Container anzuzeigen, führen Sie Folgendes aus:

$ sudo podman stats

Untersuchen Sie einen Behälter

Um komplizierte Details über einen Container auszudrucken, verwenden Sie die Untersuchungsoption:

$ sudo podman inspect webserv2

Dies gibt eine lange Ausgabe im JSON-Format aus.

Verwenden Sie die Option --format, um die Ausgabe zu filtern. Zum Beispiel, um die IP-Adresse des webserv2-Containers auszugeben

$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'

Sie können dann zusätzliche Informationen zur IP ausführen, zum Beispiel mit curl HTTP-Header abrufen.

$ curl -I ip-address

Container löschen

Um einen Container vollständig zu entfernen oder zu löschen, stoppen Sie zuerst den Container, falls er ausgeführt wird, und entfernen Sie ihn schließlich. In diesem Beispiel haben wir den Container websev1 angehalten und entfernt.

$ sudo podman stop webserv1

Entfernen Sie dann den angehaltenen Behälter.

$ sudo podman rm webserv1

Entfernen eines Bildes

Um ein Image zu entfernen, stellen Sie zunächst sicher, dass Sie alle Container beendet und entfernt haben, die von dem Image gestartet wurden. Als nächstes verwenden Sie rmi Option wie gezeigt.

$ sudo podman rmi image_name

Um beispielsweise das Ubuntu-Image zu entfernen, führen Sie den folgenden Befehl aus:

$ sudo podman rmi  docker.io/library/ubuntu

Installieren Sie den neusten Podman - Compile from source

Sie können die neueste Version von Podman testen, indem Sie die Entwicklungsversion von der Quelle installieren.

01. Abhängigkeiten erstellen und ausführen

sudo apt-get install \
   btrfs-progs \
   git \
   golang-go \
   go-md2man \
   iptables \
   libassuan-dev \
   libbtrfs-dev \
   libc6-dev \
   libdevmapper-dev \
   libglib2.0-dev \
   libgpgme-dev \
   libgpg-error-dev \
   libprotobuf-dev \
   libprotobuf-c-dev \
   libseccomp-dev \
   libselinux1-dev \
   libsystemd-dev \
   pkg-config \
   runc \
   make \
   libapparmor-dev \
   gcc \
   cmake \
   uidmap \
   libostree-dev 

02. Conmon installieren

Der Conmon ist der Container Monitor, ein kleines C-Programm, dessen Aufgabe es ist, den primären Prozess des Containers zu überwachen.

git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon  /usr/local/bin/

03. Runc installieren

So installieren Sie die neueste Version von runc

git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc

03. Container Network Interface (CNI) installieren

Das CNI-Plugin wird verwendet, um eine Netzwerkschnittstelle in den Namensraum des Containernetzwerks einzufügen.

git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni

Richten Sie das Netzwerk ein

sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf

Konfiguration hinzufügen

sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json

04. Installieren Sie Podman von der Quelle

git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev

Schlussfolgerung

Wir hoffen, dass wir Ihnen eine solide Grundlage auf Ihrem Weg zu einem besseren Profi bei der Verwendung von Podman zum Erstellen und Verwalten von Containern geboten haben. Diese Anleitung führte Sie durch die Installation von podman auf Debian 11 Buster.


Debian
  1. So installieren Sie Debian 10 (Buster)

  2. So installieren Sie Python 3.9 unter Debian 10

  3. So installieren Sie Memcached unter Debian 10

  4. So installieren Sie TeamViewer unter Debian 10

  5. So installieren Sie Git unter Debian 9

So installieren Sie Skype unter Debian 9

So installieren Sie Python 3.7 unter Debian 9

So installieren Sie R unter Debian 10

So installieren Sie Debian 11

So installieren Sie Go unter Debian 10

So installieren Sie Go unter Debian