Démarrer avec Podman (alternative à Docker) sur Rocky Linux

Podman est un outil natif de Linux pour déployer des applications à l’aide de conteneurs et d’images de conteneurs Open Container Initiative (OCI). Il prend en charge plusieurs formats d’images de conteneurs, notamment les images Docker et les images de conteneurs OCI. De plus, Podman prend en charge la gestion des pods, des groupes de conteneurs.

Podman est un outil sans démon, fonctionnant comme une simple ligne de commande binaire sans service. Il fournit une ligne de commande similaire à celle de Docker, tu peux utiliser un alias comme ‘alias docker=podman’.

Pour exécuter les conteneurs et gérer les images de conteneurs, Podman s’appuie sur libpod et les runtimes de conteneurs OCI tels que runc, crun et runv.

Conditions préalables

Dans ce guide, tu apprendras comment installer Podman sur le système Rocky Linux. Tu apprendras également l’utilisation de base de Podman pour gérer les conteneurs et les images de conteneurs.

Avant de commencer, assure-toi que tu as la configuration requise suivante :

  • Système d’exploitation : Rocky Linux 8.4 (Green Obsidian)
  • Privilèges de racine: Pour installer de nouveaux paquets et modifier la configuration du système

Commençons maintenant l’installation de Podman.

Installation de Podman sur Rocky Linux

Par défaut, le dépôt appstream de Rocky Linux fournit les paquets Podman.

1. Exécute la commande DNF ci-dessous pour afficher des informations sur le paquet podman.

sudo dnf info podman

Tu verras une sortie similaire à celle ci-dessous.

Last metadata expiration check: 0:07:09 ago on Tue 16 Nov 2021 09:30:27 AM UTC.
Available Packages
Name         : podman
Version      : 3.3.1
Release      : 9.module+el8.5.0+710+4c471e88
Architecture : x86_64
Size         : 12 M
Source       : podman-3.3.1-9.module+el8.5.0+710+4c471e88.src.rpm
Repository   : appstream
Summary      : Manage Pods, Containers and Container Images
URL          : https://podman.io/
License      : ASL 2.0 and GPLv3+
Description  : podman (Pod Manager) is a fully featured container engine that is a simple
             : daemonless tool.  podman provides a Docker-CLI comparable command line that
             : eases the transition from other container engines and allows the management of
             : pods, containers and images.  Simply put: alias docker=podman.
             : Most podman commands can be run as a regular user, without requiring
             : additional privileges.
             :
             : podman uses Buildah(1) internally to create container images.
             : Both tools share image (not container) storage, hence each can use or
             : manipulate images (but not containers) created by the other.
             :
             : Manage Pods, Containers and Container Images
             : podman Simple management tool for pods, containers and images

Le dépôt appstream fournit la version du paquet Podman‘3.3.1‘.

2. Installe Podman à l’aide de la commande DNF ci-dessous.

sudo dnf install podman

Tape‘y’ pour confirmer et appuie sur‘Enter‘ pour poursuivre l’installation.

Installer Podman Rocky Linux

3. Si l’installation de Podman est terminée, vérifie à l’aide de la commande suivante.

podman version

Tu verras une sortie similaire à celle ci-dessous.

Version:      3.3.1
API Version:  3.3.1
Go Version:   go1.16.7
Built:        Wed Nov 10 01:48:06 2021
OS/Arch:      linux/amd64

Configuration importante de Podman

Le paquet Podman est livré avec certaines configurations par défaut situées dans le répertoire ‘/etc/containers’.

Tu trouveras ci-dessous quelques configurations Podman que tu dois connaître.

  • policy.json. Configuration de la politique pour la signature des images.
  • registries.conf. Liste des registres d’images de conteneurs disponibles tels que Docker Registry, RHEL Container image registry et Fedora Container images registry.
  • storage.conf. Configuration du stockage par défaut pour Podman. Comprend les pilotes, l’emplacement, etc.
  • Répertoire registries.d/. Configuration des registres supplémentaires et signature des images
  • Répertoire registries.conf.d/. Configuration supplémentaire pour les alias des images de conteneurs.

Disposition du répertoire Podman

Configurer un nouvel utilisateur

Dans cette étape, tu vas créer un nouvel utilisateur et vérifier l’installation de Podman en exécutant l’image Docker‘hello-world‘.

1. Exécute la commande ci-dessous pour ajouter un nouvel utilisateur ‘johndoe’.

useradd -m -s /bin/bash johndoe
passwd johndoe

Saisis un nouveau mot de passe fort pour l’utilisateur‘johndoe‘.

2. Ensuite, connecte-toi en tant qu’utilisateur ‘johndoe’ à l’aide de la commande suivante.

su - johndoe

3. Exécute maintenant la commande suivante pour lancer un nouveau conteneur basé sur l’image Docker‘hello-world‘.

podman run hello-world

Tu verras les messages de sortie‘Hello World‘, ce qui signifie que le conteneur est en cours d’exécution mais qu’il est maintenant sorti.

? docker.io/library/hello-world:latest
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

4. Vérifie l’état des conteneurs sur ton système à l’aide de la commande Podman ci-dessous.

podman ps -a

Tu verras le conteneur basé sur l’image Docker ‘hello-world’ avec l’état actuel ‘Exited’.

CONTAINER ID  IMAGE                                 COMMAND     CREATED        STATUS                    PORTS       NAMES
cea9bbfeac4d  docker.io/library/hello-world:latest  /hello      6 minutes ago  Exited (0) 6 minutes ago              recursing_shaw

Utilisations de base de Podman

Dans cette étape, tu vas apprendre l’utilisation de base de Podman pour gérer les conteneurs et les images de conteneurs.

Rechercher des images de conteneur

1. Pour trouver des images de conteneur à l’aide de Podman, utilise la commande suivante. Dans cet exemple, nous recherchons des images de conteneur avec le nom‘nginx‘.

podman search nginx

Tu verras beaucoup d’images de conteneurs provenant des multiples registres.

2. Tu peux limiter les résultats de recherche de chaque registre d’images de conteneurs en utilisant l’option ‘–limit n‘.

podman search nginx --limit 3

Maintenant, tu verras chaque registre avec 3 résultats d’images de conteneur avec le nom‘nginx‘.

INDEX              NAME                                                DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
fedoraproject.org  registry.fedoraproject.org/f29/nginx                                                                 0
fedoraproject.org  registry.fedoraproject.org/f29/origin-nginx-router                                                   0
redhat.com         registry.access.redhat.com/ubi8/nginx-120           Platform for running nginx 1.20 or building ...  0
redhat.com         registry.access.redhat.com/ubi8/nginx-118           Platform for running nginx 1.18 or building ...  0
redhat.com         registry.access.redhat.com/rhscl/nginx-18-rhel7     Nginx 1.8 server and a reverse proxy server      0
centos.org         registry.centos.org/bamachrn/nginx-header                                                            0
centos.org         registry.centos.org/centos/nginx                                                                     0
centos.org         registry.centos.org/centos/nginx-110-centos7                                                         0
docker.io          docker.io/library/nginx                             Official build of Nginx.                         15839       [OK]
docker.io          docker.io/jwilder/nginx-proxy                       Automated Nginx reverse proxy for docker con...  2096                    [OK]
docker.io          docker.io/nginxinc/nginx-unprivileged               Unprivileged NGINX Dockerfiles                   54

Gérer les images de conteneurs

Podman prend en charge le format des images OCI et Docker. Dans cette étape, tu vas gérer les images de conteneurs avec Podman.

1. Télécharge l’image de conteneur‘nginx:alpine‘ à l’aide de la commande suivante.

podman pull nginx:alpine

Sélectionne le registre de conteneurs que tu veux utiliser, puis appuie sur‘Enter‘ pour confirmer. Pour cet exemple, nous utiliserons le registre Docker.

? Please select an image:
    registry.fedoraproject.org/nginx:alpine
    registry.access.redhat.com/nginx:alpine
    registry.centos.org/nginx:alpine
  ? docker.io/library/nginx:alpine

Le processus de téléchargement va commencer.

? docker.io/library/nginx:alpine
Trying to pull docker.io/library/nginx:alpine...
Getting image source signatures
Copying blob a4e156412037 done
Copying blob a2402c2da473 done
Copying blob e0bae2ade5ec done
Copying blob 97518928ae5f done
Copying blob 3f3577460f48 done
Copying blob e362c27513c3 done
Copying config b46db85084 done
Writing manifest to image destination
Storing signatures
b46db85084b80a87b94cc930a74105b74763d0175e14f5913ea5b07c312870f8

2. Si le processus de téléchargement des images de conteneurs est terminé, vérifie les images téléchargées à l’aide de la commande suivante.

podman images

Voici la sortie similaire que tu obtiendras.

REPOSITORY                     TAG         IMAGE ID      CREATED      SIZE
docker.io/library/nginx        alpine      b46db85084b8  3 days ago   24.7 MB
docker.io/library/hello-world  latest      feb5d9fea6a5  7 weeks ago  19.9 kB

Exécuter le conteneur avec Podman

Après avoir téléchargé l’image de conteneur ‘nginx:alpine’, tu vas apprendre à exécuter un nouveau conteneur à l’aide de Podman.

1. Exécute la commande suivante pour exécuter le conteneur basé sur l’image‘nginx:alpine‘.

podman run -it --rm -d -p 8080:80 --name web nginx:alpine

Tu obtiendras la chaîne et le numéro aléatoires du conteneur.

2. Vérifie que le conteneur fonctionne sur ton système à l’aide de la commande suivante.

podman ps

Tu verras une sortie similaire à celle ci-dessous.

podman run container

Le nom du conteneur‘web‘ est‘Up‘ et expose le port‘8080‘ sur la machine hôte.

3. Ouvre maintenant ton navigateur Web et tape l’adresse IP de Rocky Linux dans la barre d’adresse. Dans cet exemple, la machine Rocky Linux a l’adresse IP‘192.168.1.10‘.

http://192.168.1.10:8080/

Tu verras l’index.html par défaut du conteneur‘web‘, qui est basé sur l’image de conteneur‘nginx:alpine‘.

podman conteneur nginx

Vérifie les journaux des conteneurs avec Podman

Tu vas maintenant apprendre la commande Podman pour vérifier les journaux des conteneurs en utilisant l’option‘logs‘.

1. Pour vérifier les journaux du conteneur, tu peux utiliser la commande Podman ci-dessous.

podman logs web

Tu verras les journaux détaillés du conteneur‘web‘.

2. Pour limiter la sortie des journaux du conteneur, utilise l’option‘–tail n‘.

podman logs --tail 10 web

Tu trouveras ci-dessous une sortie de journal similaire pour le conteneur‘web‘.

podman vérifie les journaux

Arrêter le conteneur avec Podman

1. Pour arrêter le conteneur ‘web’, utilise la commande Podman ci-dessous.

podman stop web

Le conteneur‘web‘ sera maintenant arrêté.

2. Vérifie en utilisant la commande suivante.

podman ps
podman ps -a

Tu verras que le conteneur ‘web’ est automatiquement supprimé car tu utilises l’option‘–rm‘ lorsque tu exécutes le conteneur.

conteneur d'arrêt podman

Configurer un volume personnalisé avec Podman

Dans cette étape, tu vas apprendre à gérer les volumes avec Podman.

1. Crée un nouveau répertoire ‘data’ et le fichier personnalisé ‘index.html’. Cela remplacera le fichier ‘index.html’ par défaut de Nginx sur le conteneur Nginx.

mkdir -p ~/data/
nano ~/data/inde.html

Copie et colle le script HTML suivant.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Welcome to Container Nginx</title>
</head>
<body>
  <h2>Hello from Nginx container - Managed with Podman</h2>
</body>
</html>

Sauvegarde le script et quitte.

2. Ensuite, exécute la commande suivante pour créer un nouveau conteneur avec un volume personnalisé.

podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

Utilise l’option‘-v data:/usr/share/nginx/html‘ pour configurer le volume personnalisé de ton nouveau conteneur. Le répertoire‘data‘ sera monté dans le répertoire du conteneur‘/usr/share/nginx/html‘.

3. Vérifie les conteneurs en cours d’exécution à l’aide de la commande Podman ci-dessous.

podman ps

Le nouveau nom de conteneur‘web‘ est‘Up‘ avec le volume personnalisé.

Volume personnalisé podman

4. Ouvre ton navigateur Web et tape l’adresse IP du serveur avec le port‘8080‘.

http://192.168.1.10:8080/

Tu verras maintenant la page personnalisée ‘index.html’ comme ci-dessous.

Volume personnalisé du conteneur Ngix podman

SSH au conteneur en cours d’exécution

Dans cette étape, tu vas accéder au shell du conteneur en cours d’exécution.

1. Pour te connecter au conteneur en cours d’exécution, utilise Podman avec l’option ‘exec’ comme ci-dessous.

podman exec -it web /bin/sh

2. Après t’être connecté au conteneur, vérifie le nom d’hôte du conteneur, son adresse IP et la table de routage.

hostname

ip a
route -n

Tape maintenant ‘exit’ et appuie sur‘Enter‘ pour te déconnecter du conteneur.

Podman SSH au conteneur

Nettoie l’environnement

Dans la dernière étape, tu vas nettoyer ton environnement.

1. Arrête le conteneur‘web‘ à l’aide de la commande suivante.

podman stop web

2. Ensuite, supprime tous les conteneurs dont le statut est‘Exited‘ à l’aide de la commande podman ci-dessous.

podman rm $(podman ps --filter "status=exited" -q)

Tu as maintenant terminé l’utilisation de base de Podman pour gérer les conteneurs et les images de conteneurs.

Conclusion

Félicitations ! Tu as réussi à installer Podman sur le système Rocky Linux. Tu as aussi appris l’utilisation de base de Podman pour gérer les conteneurs et les images de conteneurs.

Pour la prochaine étape, tu seras peut-être intéressé par la création d’images de conteneurs personnalisées basées sur le format d’image Docker ou la spécification d’image de conteneur OCI.

Vous aimerez aussi...