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

So installieren und verwenden Sie Podman zum Ausführen von Containern unter Rocky Linux 8

Podman ist eine kostenlose Open-Source-Containerplattform, die zum Entwickeln, Verwalten und Bereitstellen von Containern und Pods in einer Linux-Umgebung entwickelt wurde. Redhat hat Podman im Jahr 2018 entwickelt. Es ist eine Containerisierungs-Engine, die anders funktioniert als Docker. Podman ist nicht auf einen Daemon angewiesen, um zu funktionieren, im Gegensatz zu Docker, das Docker CLI und Docker-Daemon verwendet. Die Abhängigkeit vom Daemon führt zu einem Single Point of Failure.

Podman wurde gemäß OCI-Standards (Open Container Initiative) entwickelt, die es Podman ermöglichen, direkt mit dem Kernel, Containern und Bildern zu interagieren. Es ist auch sicherer als Docker, da es keinen Root-Zugriff erfordert. Podman kann als direkter Ersatz für Docker verwendet werden, da beide OCI-konform sind.

Dieser Artikel zeigt Ihnen, wie Sie Podman installieren und zum Erstellen und Verwalten von Images und Containern verwenden.

Voraussetzungen

  1. Ein Rocky Linux-basierter Server

  2. Ein Nicht-Sudo-Benutzer mit Root-Rechten.

  3. Stellen Sie sicher, dass der Server aktualisiert ist.

    $ sudo dnf update
    

Podman installieren

Podman ist in den container-tools enthalten Modul, zusammen mit Buildah und Skopeo. Es ist auch im AppStream-Repository für Rocky Linux 8 verfügbar. Wir werden die Modulmethode verwenden.

Installieren Sie Podman mit dem dnf module Befehl.

$ sudo dnf module install container-tools

Überprüfen Sie die Version von Podman, um festzustellen, ob sie korrekt installiert ist.

$ podman --version
podman version 3.2.3

Container-Images suchen und herunterladen

Verwenden Sie den folgenden Befehl, um nach dem Bild von Nginx zu suchen.

$ podman search nginx

In der Ausgabe sehen Sie den Namen der Registrierung, aus der das Image stammt, und eine Beschreibung der Images.

Um das Bild herunterzuladen, verwenden Sie einen der folgenden Befehle.

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

Sie können die heruntergeladenen Bilder mit dem folgenden Befehl anzeigen.

$ podman images
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      f8f4ffc8092c  3 days ago  138 MB

Container ausführen

Verwenden Sie den folgenden Befehl, um einen Container mit dem Nginx-Image auszuführen. Wir haben den Container als Webserver bezeichnet .

$ podman run -d --name webserver nginx 

Wir können dasselbe Image verwenden, um einen anderen Container mit einem anderen Namen zu starten.

$ podman run -d --name webserver2 nginx

Wir können eine unbegrenzte Anzahl von Containern mit demselben Image starten.

Container auflisten und stoppen

Verwenden Sie den folgenden Befehl, um alle laufenden Container aufzulisten.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  31 seconds ago  Up 31 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago   Up 3 seconds ago               webserver2

Stoppen Sie den laufenden Container.

$ podman stop webserver
webserver

Überprüfen Sie, ob es gestoppt wurde.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                 PORTS       NAMES
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago              webserver2

Um alle Container aufzulisten, einschließlich der angehaltenen, müssen Sie -a verwenden Flagge.

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                     PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago       Exited (0) 35 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago                  webserver2

Starte einen gestoppten Container

Verwenden Sie den folgenden Befehl, um einen angehaltenen Container zu starten.

$ podman start webserver
webserver

Überprüfen Sie, ob es gestartet wurde.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago  Up 16 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago               webserver2

Container löschen

Sie müssen einen Container stoppen, bevor Sie ihn löschen können.

$ podman stop webserver2

Container löschen.

$ podman rm webserver2

Sie können einen laufenden Container löschen, indem Sie --force verwenden Flagge.

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27

Behälter töten

Das Stoppen und Töten eines Containers sind zwei verschiedene Dinge, die letztendlich dasselbe bewirken. Der Unterschied besteht darin, dass das Beenden eines Containers ihn ordnungsgemäß herunterfährt, während das Beenden eines Containers ihn zwangsweise beendet, was zu Datenverlust führt.

Verwenden Sie den folgenden Befehl, um den Container zu beenden.

$ podman kill -s 9 webserver2

Der obige Befehl verwendet das SIGNAL 9 (SIGKILL) Option zum Beenden des Containers.

Um alle Container zu beenden, verwenden Sie --all oder -a verwenden Sie --latest, um nur den neuesten Container zu löschen oder -l Flagge.

Bild löschen

Sie können die Bilder mit rmi löschen Befehl.

$ podman rmi registry.redhat.io/rhel8/rsyslog

Sie können mehrere Bilder löschen, indem Sie sie durch Kommas trennen.

$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi

Um alle Bilder auf Ihrem System zu entfernen, verwenden Sie -a Flagge.

$ podman rmi -a

Containerprotokolle anzeigen

Verwenden Sie den folgenden Befehl, um die Containerprotokolle anzuzeigen.

$ podman logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
......

Sie können die Protokolle auf die letzten 5 Zeilen beschränken, indem Sie --tail verwenden Option.

$ podman logs --tail=5 webserver
2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64
2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2021/10/05 10:13:52 [notice] 1#1: start worker processes
2021/10/05 10:13:52 [notice] 1#1: start worker process 23

Standardmäßig erhalten Sie keine Zeitstempel in den Protokollen. Verwenden Sie das -t Flag, um Ihren Protokollen Zeitstempel hinzuzufügen.

$ podman logs -t webserver
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
.....

Inspizieren von Containern

Beim Überprüfen eines Containers werden die Informationen über einen Container gedruckt.

$ podman inspect webserver
[
    {
        "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59",
        "Created": "2021-10-05T09:25:01.784949744Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4423,
....

Der Standardbefehl gibt eine lange Ausgabe im JSON-Format aus. Um die Ausgabe zu filtern, müssen Sie das --format verwenden Möglichkeit. Führen Sie den folgenden Befehl aus, um herauszufinden, wann der Container gestartet wurde.

$ podman inspect webserver --format '{{.State.StartedAt}}'
2021-10-05 10:13:52.794806322 +0000 UTC

Auf Container Shell zugreifen

Sie können auf die Shell-Eingabeaufforderung jedes Containers zugreifen, indem Sie exec verwenden Option.

$ podman exec -it webserver2 /bin/bash

Pods

Podman hat eine einzigartige Funktion, die Docker fehlt. Podman kann Pods aus Containern erstellen, die zusammenarbeiten. Auf diese Weise können Sie mehrere Container zusammen verwalten.

Verwenden Sie zum Erstellen eines Pods den folgenden Befehl.

$ podman pod create --name mypod

Fügen Sie dem neu erstellten Pod die Container hinzu.

$ podman run --pod mypod --name myimage1 image:latest
$ podman run --pod mypod --name myimage2 diff-image:latest

Sie können jetzt Container mit einfachen einzeiligen Befehlen verwalten.

$ podman kill mypod      # Kill all containers
$ podman restart mypod   # Restart all containers
$ podman stop mypod      # Stop all containers
$ podman pod ps			# List all pods
$ podman pod top mypod   # Display running processes in a pod
$ podman pod inspect mypod # Inspect a Pod
$ podman pod rm mypod    # Remove the pod

Schlussfolgerung

Damit ist unser Tutorial zum Installieren und Verwenden von Podman zum Ausführen von Containern abgeschlossen. Es gibt viele Dinge, die Sie mit Podman tun können, die wir nicht behandelt haben. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Rocky Linux
  1. So installieren Sie Docker und Docker-Compose unter Rocky Linux 8

  2. Was ist Podman und wie installiere ich Podman unter Linux?

  3. So installieren und verwenden Sie Podman in Rocky Linux/Alma Linux/Centos 8

  4. So installieren und konfigurieren Sie Elasticsearch unter Rocky Linux 8

  5. So installieren und konfigurieren Sie Docker Container unter Rocky Linux 8

So installieren Sie Podman auf Rocky Linux 8 / AlmaLinux, um Container auszuführen

So installieren und verwenden Sie FFmpeg in Rocky Linux 8

So installieren und konfigurieren Sie OpenCV unter Rocky Linux 8.4

So installieren Sie Podman unter Rocky Linux 8

So installieren Sie Docker unter Rocky Linux und AlmaLinux

So installieren Sie MongoDB unter Rocky Linux und AlmaLinux