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.
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.
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.
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‘.
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‘.
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.
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é.
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.
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.
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.