Podman est présenté comme une alternative pertinente à
Docker, offrant une expérience
utilisateur similaire tout en éliminant certains des défis de sécurité que pose
le démon Docker tournant avec les privilèges root. Voyons cela ensemble.
Introduction
Podman, pour POD manager, est un outil Open Source qui sert à
construire et exécuter des images de conteneurs. Podman est développé par la
société Red Hat et des membres de la communauté.
Contrairement à Docker qui
fonctionne sur une architecture client-serveur nécessitant un démon, Podman
adopte une approche daemonless. Cela signifie que chaque action exécutée est
un processus indépendant et non vient un démon, ce qui améliore la sécurité et
simplifie la gestion des conteneurs.
Une autre des caractéristiques notables de Podman est sa capacité à
exécuter des conteneurs sans nécessiter les privilèges root, offrant ainsi
une sécurité accrue.
Podman est conçu pour être compatible avecDocker, ce qui facilite la
transition pour ceux qui sont déjà familiarisés avec Docker. Les images
Docker peuvent être exécutées sans aucune modification et les commandes de
la cli Podman sont très similaires à celles de Docker, rendant le passage
de Docker à Podman facile.
C’est quoi un pod pour Podman ?
Un Pod dans Podman est un concept emprunté à Kubernetes. Un pod Podman est
composé d’un ou plusieurs conteneurs, qui sont regroupés dans un espace de noms,
un réseau et un contexte de sécurité uniques.
Installation de Podman
Podman est peut-être installé sur des serveurs tournant sous Linux, MacOS et
Windows.
Je me limiterai ici à décrire **l’installation d’une version récente de
Podman sur une distribution Ubuntu :
Pour les autres distributions la documentation se trouve
ici ↗.
Vérification de l’installation de Podman
Il suffit de lancer la commande suivante :
Commandes de base de Podman
Comme dis plus haut, La cli de Podman est très très proche de celles de
Docker. Donc ceux qui connaissent Docker peuvent passer à la section sur la
gestion des Pods.
Création d’une image
La création des images est gérée par Buildah qui est intégré comme l’est
BuildKit dans Docker. La commande build de Podman permet de construire des
images.
Je ne vais re-documenter cette partie, car elle est déjà disponible
[ici]((/docs/conteneurs/images-conteneurs/build/buildah/).
Gestion des images
Rechercher des images dans les registry
Pour trouver des images dans la plupart des registry, on utilise la commande
search :
Pour obtenir la liste des images officielles, on ajoute l’option --filter is-official :
Pour obtenir la liste des tags disponibles, on ajoute l’option --list-tags :
Télécharger une image
Pour télécharger l’image Ubuntu possédant le tag 3.18.4 depuis le Docker Hub, on
utilise la commande pull :
Lister les images
Pour afficher toutes les images disponibles localement, on utilise la commande images :
Obtenir des informations sur une image
On utilisera la commande image inspect :
Détruire des images
Pour détruire les images locales, on utilise la commande rmi :
Gestion des conteneurs
Lancer une image de conteneur
Pour lancer par exemple une image de conteneur alpine on utilise la commande
run :
Il ne se passe rien, c’est normal ! Notre image ne possède pas d’instruction CMD ou ENTRYPOINT.
Lancer le conteneur en mode interactif
Pour lancer une exécution interactive, c’est-à-dire qu’on se retrouve avec
l’invite de commande du conteneur, on utilise l’option -it :
Pour sortir, il suffit soit de taper la commande exit ou la séquence de touche
[CTRL] + [D].
Le mode interactif est très utile dans les phases de construction des images
ainsi que dans celui du DEBUG.
Lancer le conteneur en tâche de fond
Pour lancer une image de conteneur en tache de fond, il faut utiliser l’option
-dt. Pour cela, nous aurons besoin d’un conteneur httpd :
Maintenant lançons le en exposant le port 80 :
Testons :
Ça fonctionne.
Nommer votre conteneur
Pour fixer le nom, il faut ajouter l’option --name :
Lister les conteneurs en cours d’exécution
Pour lister les conteneurs en cours, il faut utiliser commande ps :
Stopper/Démarrer un conteneur
Pour stopper un conteneur, il faut utiliser commande stop :
Vérifions :
Pour vérifier que notre conteneur juste stoppé, il faut utiliser l’option -a à
la commande ps :
Relançons le conteneur my-httpd :
Afficher les logs d’un conteneur
Pour afficher les logs du conteneur, on utilise la commande logs :
Se connecter à un conteneur en cours d’exécution
Pour se connecter à un conteneur tournant en tache de fond :
Détruire un conteneur
Pour détruire un conteneur, il faut utiliser la commande rm :
Cela n’a pas fonctionné, car le conteneur est en cours d’utilisation. Pour forcer
la destruction, il faut ajouter l’option -f :
Faire le ménage
Attention, Podman comme Docker utilise pas mal d’espace disque.
Heureusement, nous avons des commandes pour contrôler l’évolution de
l’utilisation de l’espace disque. À commencer par la commande system ps.
Pour faire de la place, on utilise la commande system prune :
Gestion des Pods sous Podman
Pour rappel, les pods sont des groupes de conteneurs qui partagent des
ressources. Les pods Podman sont la fonctionnalité qui distingue Podman
de Docker. Pour gérer les pods, il faut utiliser la commande podman pod.
Créer un pod
Pour créer un pod, il faut utiliser la commande create auquel on ajoute
l’option --name pour le nommer :
L’exposition des ports se fait au niveau du pod et non du conteneur.
Attacher un conteneur à un pod
Pour attacher un conteneur à un pod, il faut, au moment du lancement du
conteneur, ajouter l’option --pod :
Testons :
Cela fonctionne.
Les autres commandes
Les autres commandes sont identiques que celles utilisées pour la gestion des
conteneurs.
Lister les pods
Pour lister les pods en cours, on utilise la commande ls :
Problèmes courants
Podman est conçu pour être exécuté sans privilèges root. Cependant, certaines
configurations peuvent nécessiter des ajustements pour fonctionner correctement
sans privilèges root.
Des problèmes peuvent survenir lors de la configuration des réseaux de
conteneurs. Il peut être nécessaire de configurer manuellement les réseaux ou de
s’assurer que certaines règles de pare-feu sont correctement configurées.
Bien que Podman soit compatible avec les commandes et les images Docker,
il peut y avoir des cas où des ajustements sont nécessaires pour faire
fonctionner certaines images Docker sans modifications.
Conclusion
Que de progrès depuis mon dernier test. L’utilisation de Podman sur un
compte ne possédant pas les privilèges root fonctionne plutôt bien. Podman
est devenu une alternative crédible à Docker.