Podman : le moteur de conteneur sans Daemon

Ces dernières années, la virtualisation de conteneurs a gagné en importance. Cette technologie, qui doit notamment sa popularité au logiciel Docker paru en 2013, est aujourd’hui devenue une composante fondamentale de divers outils pour le contrôle des namespaces (fr. « espaces de nom ») virtuels. Podman est l’une des solutions les plus intéressantes : initialement conçu comme un outil de débogage pour CRI-O devant simplifier le travail avec les clusters Kubernetes, ce logiciel est rapidement devenu un moteur complet et indépendant pour la gestion de conteneurs.

Note

Les namespaces permettent de regrouper une sélection d’éléments d’un code (par ex. des classes) dans un conteneur.

Dans la suite de cet article, vous découvrirez ce qui fait la particularité de Podman et comment cet outil de conteneurs peut être utilisé pour répondre à vos besoins.

Qu’est-ce que Podman ?

Podman (abréviation de « Pod Manager ») est un moteur de conteneur publié pour la première fois en février 2018. Le développeur est la société de logiciels américaine Red Hat qui est principalement connue pour ses solutions d’entreprise performantes pour les projets open source les plus divers comme Red Hat Enterprise Linux (RHEL) ou OpenStack. Basé sur les expériences de Docker, Podman n’a pas été conçu initialement comme un moteur indépendant mais comme un outil de débogage simple pour CRI-O, un plan qui a rapidement été abandonné.

Ce logiciel de conteneurs ressemble à Docker par de nombreux points et utilise par exemple le même interpréteur de ligne de commande que le leader du secteur. De ce fait, il est également possible d’utiliser les principales commandes de Docker dans Podman. Pour cela, il suffit d’utiliser l’alias alias docker=podman. En général, passer de Docker à Podman est donc relativement simple. La nouveauté majeure apportée par Podman est l’abandon d’un Daemon central comme instance de gestion pour les conteneurs individuels. Ceci permet d’accéder aux différentes applications virtualisées sans droits root.

Note

Dans les systèmes d’exploitation Unix/Linux, on entend par Daemon un programme exécuté en arrière-plan et mettant à disposition certains services et processus.

Podman fonctionne sur toutes les distributions Linux courantes comme Ubuntu, Fedora, CentOS, Debian et RHEL ainsi que sur Raspbian (système d’exploitation pour les Raspberry Pi). Dans ce cadre, le moteur peut généralement être installé directement via la gestion de paquet du système concerné.

Conseil

Dans notre Digital Guide, vous trouverez plus d'informations sur « Podman vs. Docker : quel futur pour le monde des conteneurs ? ».

Structure et fonctionnement de Podman

En plus de renoncer à un Daemon central, Podman se distingue également par ses pods. Inspirés du concept de pods de Kubernetes, les pods sont un regroupement de plusieurs conteneurs au sein d’un namespace Linux commun et partageant certaines ressources. Ceci permet de combiner les applications virtualisées les plus diverses de façon flexible.

Comme indiqué précédemment, Podman permet d’exécuter les différents conteneurs sur l’hôte en tant qu’utilisateur habituel, c’est-à-dire sans droits root. Les processus nécessitent uniquement des droits root au sein d’un conteneur. Pour y parvenir, Podman a recours aux namespaces utilisateur du noyau Linux qui attribuent aux processus des droits spécifiques et des identifiants d’utilisateur. Comme les conteneurs sont exécutés en tant qu’administrateur, l’environnement virtualisé de Podman offre un haut degré de sécurité.

Le noyau d’un pod est formé par des infraconteneurs responsables exclusivement de la fonctionnalité du groupe et ayant pour fonction de gérer et de garantir les différentes ressources comme les namespaces, les ports réseau, le processeur, la mémoire vive, etc. Pour la gestion des pods, Podman utilise par ailleurs l’outil de monitoring codé en C Conmon qui surveille les différents composants virtualisés et sécurise par exemple les journaux. Cet outil sert également d’interface avec le terminal du conteneur concerné. Pour la durée des conteneurs, Podman utilise le logiciel runC qui intervient également dans de nombreuses autres solutions comme Docker ou rkt.

Tutoriel Podman : premiers pas avec Podman

Après vous avoir présenté les principales caractéristiques de Podman, nous résumons pour vous dans le tutoriel Podman suivant les principaux points à observer dans vos débuts avec ce moteur de conteneur.

Installer Podman sous Linux

Podman est un logiciel permettant l’exécution de conteneurs Linux. Sur les distributions Linux telles que CentOS, Ubuntu, Debian, etc., cet outil est facile et rapide à installer : dans la plupart des cas, les paquets d’installation sont disponibles directement dans la gestion des paquets du système d’exploitation concerné et peuvent être installés avec les habituelles commandes du terminal du système.

Note

Le projet Kubic sur opensuse.org met à disposition différents paquets d’installation de Podman pour diverses distributions et versions afin de servir d’alternatives aux paquets natifs dans le répertoire système.

Debian, Ubuntu, Raspbian :

sudo apt-get update -qq
sudo apt-get -qq -y install podman

Fedora, CentOS, Amazon Linux 2, RHEL 7 :

sudo yum -y install podman

OpenSUSE :

sudo zipper install podman

Installer Podman sous Windows et macOS

Podman fonctionne parfaitement dans les environnements Linux. Cependant, vous pouvez également utiliser ce moteur de conteneur sur les appareils utilisant les systèmes d’exploitation Windows ou macOS. Pour ce faire, vous devez disposer depuis ces appareils d’un accès à une installation de Linux qui fonctionne au sein d’une machine virtuelle sur l’hôte ou accessible via le réseau.

Si vous disposez d’un tel accès, il vous suffira d’un client distant Podman pour établir une connexion SSH avec le backend de Podman.

Note

Les informations de connexion pour la connexion SSH doivent être renseignées dans le fichier de configuration podman-remote.conf. Le tutoriel sur le client distant de Podman sur GitHub vous fournit des informations détaillées sur l’installation et l’utilisation.

Fonctionnement de la gestion d’image de conteneur avec Podman

Du point de vue des fonctionnalités et de la syntaxe, Podman se base principalement sur Docker. Par conséquent, lors de la mise en place des conteneurs souhaités, vous pouvez utiliser le vaste stock d’images Docker prêtes à l’emploi également connu sous le nom de Docker Hub. À l’aide de la commande pull, vous pouvez télécharger n’importe quelle image d’application, par ex. la dernière version d’Ubuntu :

podman pull hub.docker.com/_/ubuntu:latest

Le chemin d’accès officiel des différentes images est le chemin local /.local/share/containers/. Chaque utilisateur dispose de son propre namespace de sorte que la configuration de votre propre conteneur est séparée de la configuration root. Vous pouvez obtenir un aperçu des images enregistrées localement avec la commande suivante :

podman images

Pour obtenir une liste des images root, il suffit d’antéposer la commande « sudo » habituellement utilisée sous Linux :

sudo podman images