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

So installieren und verwenden Sie Podman in Fedora 34/35

Podman ergänzt Buildah und Skopeo, indem es ein ähnliches Erlebnis wie die Docker-Befehlszeile bietet:Benutzer können eigenständige (nicht orchestrierte) Container ausführen. Und Podman benötigt keinen Daemon, um Container und Pods auszuführen, sodass wir uns leicht von großen, fetten Daemons verabschieden können. Es gibt keine Daemons im Hintergrund, die Dinge erledigen, und das bedeutet, dass Podman über systemd in Systemdienste integriert werden kann .

In dieser Anleitung lernen wir, wie man Podman in Fedora installiert.

Verwandte Beiträge

  • So installieren und verwenden Sie Podman in Debian 11
  • So installieren und verwenden Sie Podman in Rocky Linux/Alma Linux/Centos 8
  • So installieren und verwenden Sie Podman in OpenSUSE Leap 15.3
  • So installieren und konfigurieren Sie Docker in Rocky Linux/Centos 8
  • Erste Schritte mit Docker Compose mit Beispielen
  • Docker als Build-Agent – ​​Führen Sie Jenkins-Builds auf Docker aus

Voraussetzungen

Um mitzumachen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein aktualisierter Fedora Server/Workstation
  • Root-Zugriff oder Benutzer mit Sudo-Zugriff
  • Zugang zum Internet

Inhaltsverzeichnis

  1. Sicherstellen, dass der Server auf dem neuesten Stand ist
  2. Podman installieren
  3. Befehlszeilenbeispiele
  4. Runa postgres persistenter Container
  5. Container als Systemdienste über systemd und Podman verwalten

1. Sicherstellen, dass der Server auf dem neuesten Stand ist

Verwenden Sie diesen Befehl, um sicherzustellen, dass unsere Serverpakete aktualisiert werden

sudo dnf update -y

Lassen Sie uns sicherstellen, dass gemeinsame Pakete installiert werden

sudo dnf install -y vim

2. Podman installieren

Podman ist in den Standard-Repositories für Fedora verfügbar. Installieren Sie es mit diesem Befehl:

sudo dnf install -y podman

Dieser Befehl installiert Podman und auch seine Abhängigkeiten.

Das ist alles. Jetzt können wir jetzt mit Podman spielen.

3. Beispiele für Befehlszeilen

Lassen Sie uns untersuchen, wie Rocky Linux Container mit podman ausgeführt wird.

Auf Docker würden wir diesen Befehl verwenden, um einen Rocky-Linux-Container auszuführen:

docker run -it fedora:35 sh

Dies wird fehlschlagen, da kein docker vorhanden ist Befehl auf meiner Fedora-Maschine. Wir können docker durch podman ersetzen:

podman run -it fedora:35 sh

Lassen Sie uns einige Befehle ausführen, um zu bestätigen, dass es wie erwartet funktioniert:

$ podman run -it fedora:35 sh
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull registry.fedoraproject.org/fedora:35...
Getting image source signatures
Copying blob 791199e77b3d done
Copying config 1b52edb081 done
Writing manifest to image destination
Storing signatures
sh-5.1# whoami
root
sh-5.1# exit
exit

Um den Containerstatus zu prüfen, verwenden Sie podman ps Befehl

$ podman ps -a
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS                     PORTS       NAMES
cd8f63c2e3f2  registry.fedoraproject.org/fedora:35  sh          50 seconds ago  Exited (0) 17 seconds ago              musing_ishizaka

Verwenden Sie zum Löschen des Containers podman rm :

$ podman rm cd8f63c2e3f2
cd8f63c2e3f2fe5799d619104522892fca3ada2d3a5b7e4601648ac0de20cb89

So listen Sie die Bilder auf:

$ podman images
REPOSITORY                         TAG         IMAGE ID      CREATED      SIZE
registry.fedoraproject.org/fedora  35          1b52edb08181  11 days ago  159 MB

Wir können das Bild mit dem Bild podman image rm löschen Befehl:

$ podman image rm fedora
Untagged: registry.fedoraproject.org/fedora:35
Deleted: 1b52edb0818147bea39780625ec01ab46944284acf16d8bcfa4055f8a854a9f5

Aus dem Obigen können wir bestätigen, dass der Podman-Befehl die gleiche Syntax wie Docker verwendet

4. Führen Sie einen persistenten Postgres-Container aus

Lassen Sie uns als Nächstes untersuchen, wie wir einen persistenten Container ausführen können. In diesem Beispiel führen wir einen Postgres 14-Container aus und stellen die Postgres-Daten auf einem lokalen Volume bereit, damit Neustarts bestehen bleiben. Da Container vergänglich sind, gehen Daten verloren, wenn wir sie nicht auf einem lokalen Volume speichern.

Ziehen Sie docker.io/library/postgres:14.0-alpine Bild

$ podman pull docker.io/library/postgres:14.0-alpine
Trying to pull docker.io/library/postgres:14.0-alpine...
Getting image source signatures
Copying blob 3da258773353 done
Copying blob 5034a66b99e6 done
Copying blob 82e9eb77798b done
Copying blob a0d0a0d46f8b done
Copying blob ccd761727716 done
Copying blob c6b2245b2f36 done
Copying blob 028554d3b6cc done
Copying blob 2c7ee7bc69e8 done
Copying config 87440f4e7f done
Writing manifest to image destination
Storing signatures
87440f4e7f9e60607dc11a4f0590a1c69b3a1c075211df478e22b0c27fb263e6

Bilder bestätigen

$ podman images
REPOSITORY                  TAG          IMAGE ID      CREATED      SIZE
docker.io/library/postgres  14.0-alpine  87440f4e7f9e  2 weeks ago  198 MB

Untersuchen Sie das Bild mit

$ podman inspect 87440f4e7f9e

Lassen Sie uns einen Ordner einrichten, der Postgres-Daten verarbeitet, sobald wir unseren Container starten:

$ mkdir -p ~/apps/postgres/data

Führen Sie es aus

podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

Dies ist meine Ausgabe

$ podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136

Prozesse prüfen:

$ podman ps
CONTAINER ID  IMAGE                                   COMMAND     CREATED        STATUS            PORTS                   NAMES
dc5117faeb43  docker.io/library/postgres:14.0-alpine  postgres    9 seconds ago  Up 9 seconds ago  0.0.0.0:5432->5432/tcp  cool_hermann

Bestätigen Sie damit die Container-Logs. Sie können sehen, dass es die Datenbank initialisiert

$ podman logs dc5117faeb43 | head
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok

Lassen Sie uns eine Verbindung zur Datenbank herstellen und einige Operationen ausführen

$ podman exec -it dc5117faeb43 /bin/bash
bash-5.1# psql -U citizix_user -d citizix_db;
psql (14.0)
Type "help" for help.

citizix_db=# select version();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
(1 row)

citizix_db=#

Lassen Sie uns als Nächstes das Töten und Entfernen des Containers untersuchen. Wir können podman kill verwenden um den Behälter zu stoppen. Dadurch wird der Container gestoppt, aber er ist immer noch da. Verwenden Sie podman ps -a  auflisten. Um es vollständig zu entfernen, dann podman rm -f .

$ podman kill dc5117faeb43
dc5117faeb43

$ podman ps -a
CONTAINER ID  IMAGE                                   COMMAND     CREATED        STATUS                           PORTS                   NAMES
dc5117faeb43  docker.io/library/postgres:14.0-alpine  postgres    3 minutes ago  Exited (137) About a minute ago  0.0.0.0:5432->5432/tcp  cool_hermann

$ podman rm -f dc5117faeb43
dc5117faeb431c021f54a60e6303707fe7b48aef199fe53b751236eaf2c08136

5. Verwalten von Containern als Systemdienste über systemd und Podman

Wir können Podman-Container über systemd verwalten. Lassen Sie uns ein systemd erstellen Ressourcendatei für den Umgang mit dem Postgres-Container, den wir gerade oben erstellt haben.

Erstellen Sie eine Postgres-Podman-Datei:

sudo vim /etc/systemd/system/postgres-podman.service

Diesen Inhalt hinzufügen

[Unit]
Description=Custom Postgres Podman Container
After=network.target

[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f postgrespodman

ExecStart=/usr/bin/podman run \
    -p 5432:5432 \
    -v /home/fedora/apps/postgres/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

ExecReload=-/usr/bin/podman stop postgrespodman
ExecReload=-/usr/bin/podman rm postgrespodman
ExecStop=-/usr/bin/podman stop postgrespodman
Restart=always
RestartSec=30

[Install]

Dann können wir die systemd neu laden catalog und starten Sie den Dienst:

sudo systemctl daemon-reload
sudo systemctl start postgres-podman

Bestätigen Sie den Dienststatus

$ sudo systemctl status postgres-podman
● postgres-podman.service - Custom Postgres Podman Container
     Loaded: loaded (/etc/systemd/system/postgres-podman.service; static)
     Active: active (running) since Mon 2021-11-15 05:20:35 UTC; 5s ago
    Process: 29565 ExecStartPre=/usr/bin/podman rm -f postgrespodman (code=exited, status=1/FAILURE)
   Main PID: 29596 (podman)
      Tasks: 15 (limit: 4585)
     Memory: 262.3M
        CPU: 5.362s
     CGroup: /system.slice/postgres-podman.service
             ├─29596 /usr/bin/podman run -p 5432:5432 -e POSTGRES_PASSWORD=Sup3rSecre7 -e POSTGRES_USER=citizix_user -e POSTGRES_DB=citizix_db docker.io/library/postgres:14.0-alpine
             └─29646 storage-untar / /var/lib/containers/storage/overlay/772aeee45322a287d8cfed4d3a774519a5a1bfb20750bf46584a8f7a9713fcaf/diff

Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:82e9eb77798bd506a06a9adab733c822c718be829c54d514b5789b07c0f1c164
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:c6b2245b2f36c7d2a1e9071eeede220cca1f2e0662350115a22e7cac7f973a8c
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:ccd761727716597fddb7d24aa4d7d68b3b638897b9351ccc295aa86407bd85e6
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:5034a66b99e67db609bf6b4f82bea915e39a42e6f03d11889f7406b4de9e99da
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:3da258773353ad3725cb0ef73e28bd60fdd9078df3790b06b98198a86ef0424f
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:2c7ee7bc69e85f0517dccf3edfa293c2bfc147e3794ab403fda249c2e59a58ab
Nov 15 05:20:37 fedora-client.citizix.com podman[29596]: Copying blob sha256:028554d3b6ccc72641ab3b2a68597bf04cdbb49e03bb977c69198fd35c098e87

Wir haben gerade einen benutzerdefinierten Systemdienst basierend auf einem Container eingerichtet, der über Podman verwaltet wird!

Schlussfolgerung

In diesem Handbuch haben wir untersucht, wie Podman auf unserem Rocky Linux/Centos 8-Server installiert wird.


Fedora
  1. So installieren Sie Apache Maven auf Fedora 35/34

  2. So installieren Sie Gradle auf Fedora 35/34

  3. So installieren und verwenden Sie Docker in Ubuntu 20.04

  4. So installieren und konfigurieren Sie MySQL Server 8 auf Fedora 34/35

  5. So installieren Sie Mongodb 5 auf Fedora 34/35

So installieren und konfigurieren Sie Drupal auf Fedora 35/34

So installieren Sie TeamViewer auf Fedora 35/34

So installieren und verwenden Sie Telnet auf Fedora 35

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So installieren und verwenden Sie Podman (Docker-Alternative)

So installieren und verwenden Sie Docker unter AlmaLinux 8