GNU/Linux >> Tutoriels Linux >  >> Fedora

Comment installer et utiliser Podman dans Fedora 34/35

Podman complète Buildah et Skopeo en offrant une expérience similaire à la ligne de commande Docker :permettant aux utilisateurs d'exécuter des conteneurs autonomes (non orchestrés). Et Podman n'a pas besoin d'un démon pour exécuter des conteneurs et des pods, nous pouvons donc facilement dire au revoir aux gros démons. Il n'y a pas de démons en arrière-plan qui font des choses, ce qui signifie que Podman peut être intégré aux services système via systemd .

Dans ce guide, nous apprendrons comment installer Podman dans Fedora.

Articles associés

  • Comment installer et utiliser Podman dans Debian 11
  • Comment installer et utiliser Podman dans Rocky Linux/Alma Linux/Centos 8
  • Comment installer et utiliser Podman dans OpenSUSE Leap 15.3
  • Comment installer et configurer docker dans Rocky Linux/Centos 8
  • Premiers pas avec Docker Compose avec des exemples
  • Docker en tant qu'agent de build :exécutez les builds Jenkins sur Docker

Prérequis

Pour suivre, assurez-vous que vous disposez des éléments suivants :

  • Un serveur/poste de travail Fedora mis à jour
  • Accès root ou utilisateur avec accès sudo
  • Accès à Internet

Table des matières

  1. S'assurer que le serveur est à jour
  2. Installer podman
  3. Exemples de ligne de commande
  4. Exécuter un conteneur persistant postgres
  5. Gestion des conteneurs en tant que services système via systemd et Podman

1. S'assurer que le serveur est à jour

Utilisez cette commande pour vous assurer que nos packages de serveur sont mis à jour

sudo dnf update -y

Assurons-nous que les packages communs sont installés

sudo dnf install -y vim

2. Installer Podman

Podman est disponible dans les dépôts par défaut pour Fedora. Installez-le à l'aide de cette commande :

sudo dnf install -y podman

Cette commande installera Podman ainsi que ses dépendances.

C'est tout. Nous pouvons maintenant jouer avec Podman.

3. Exemples de ligne de commande

Explorons l'exécution de Rocky Linux Container à l'aide de podman.

Sur Docker, nous utiliserions cette commande pour exécuter un conteneur Rocky Linux :

docker run -it fedora:35 sh

Cela échouera car il n'y a pas de docker commande sur ma machine Fedora. On peut remplacer docker par podman :

podman run -it fedora:35 sh

Exécutons quelques commandes pour confirmer qu'il fonctionne comme prévu :

$ 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

Pour vérifier l'état du conteneur, utilisez podman ps commande

$ 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

Pour supprimer le conteneur, utilisez podman rm :

$ podman rm cd8f63c2e3f2
cd8f63c2e3f2fe5799d619104522892fca3ada2d3a5b7e4601648ac0de20cb89

Pour lister les images :

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

Nous pouvons supprimer l'image à l'aide de l'image podman image rm commande :

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

D'après ce qui précède, nous pouvons confirmer que la commande podman utilise la même syntaxe que docker

4. Exécuter un conteneur persistant Postgres

Ensuite, explorons comment nous pouvons exécuter un conteneur persistant. Dans cet exemple, nous allons exécuter un conteneur Postgres 14 et monter les données postgres sur un volume local afin qu'il puisse persister les redémarrages. Les conteneurs étant éphémères, les données seront perdues si nous ne sauvegardons pas dans un volume local.

Extrayez docker.io/library/postgres:14.0-alpine photo

$ 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

Confirmer les images

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

Inspectez l'image avec

$ podman inspect 87440f4e7f9e

Configurons un dossier qui gérera les données Postgres une fois que nous aurons démarré notre conteneur :

$ mkdir -p ~/apps/postgres/data

Exécutez-le

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

Ceci est ma sortie

$ 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

Vérifier les processus :

$ 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

Confirmez les journaux du conteneur avec ceci. Vous pouvez voir qu'il initialise la base de données

$ 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

Connectons-nous à la base de données et effectuons quelques opérations

$ 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=#

Ensuite, explorons la suppression et le retrait du conteneur. Nous pouvons utiliser podman kill pour arrêter le conteneur. Cela arrêtera le conteneur, mais il sera toujours là. Utilisez podman ps -a  lister. Pour le supprimer complètement, 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. Gestion des conteneurs en tant que services système via systemd et Podman

Nous pouvons gérer les conteneurs podman via systemd. Créons un systemd fichier de ressources pour gérer le conteneur postgres que nous venons de créer ci-dessus.

Créez un fichier podman postgres :

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

Ajouter ce contenu

[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]

Ensuite, nous pouvons recharger le systemd catalogue et démarrer le service :

sudo systemctl daemon-reload
sudo systemctl start postgres-podman

Confirmer l'état du service

$ 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

Nous venons de mettre en place un service système personnalisé basé sur un conteneur géré via Podman !

Conclusion

Nous avons réussi à explorer comment installer Podman sur notre serveur Rocky Linux/Centos 8 dans ce guide.


Fedora
  1. Comment installer Skype sur Fedora 35/34

  2. Comment installer Apache Maven sur Fedora 35/34

  3. Comment installer Gradle sur Fedora 35/34

  4. Comment installer et utiliser Podman dans Fedora 34/35

  5. Comment installer Docker sur Fedora 32 ou 31 (et alternatives)

Comment installer et configurer Drupal sur Fedora 35/34

Comment installer TeamViewer sur Fedora 35/34

Comment installer et utiliser Telnet sur Fedora 35

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment installer et utiliser Podman (alternative à Docker)

Comment installer et utiliser Docker sur AlmaLinux 8