Raccourcis

Podman, qu'est-ce que c'est ?

Copier l'URL

Podman (« POD manager ») est un outil Open Source qui sert à développer, gérer et exécuter des conteneurs sur des systèmes Linux®. Développé par des ingénieurs Red Hat® et des membres de la communauté Open Source, Podman gère l'ensemble de l'écosystème de conteneurs à l'aide de la bibliothèque libpod. 

Son architecture inclusive et sans démon le rend plus accessible et sécurisé pour gérer les conteneurs. De plus, les outils et fonctions qui l'accompagnent, notamment Buildah et Skopeo, permettent aux développeurs de personnaliser leurs environnements de conteneurs en fonction de leurs besoins. 

Un pod est un groupe de conteneurs qui s'exécutent ensemble et partagent les mêmes ressources, comme un pod Kubernetes. Podman gère ces pods à l'aide d'une interface en ligne de commande et de la bibliothèque libpod qui fournit des API pour gérer les conteneurs, pods, images de conteneurs et volumes. L'interface en ligne de commande de Podman crée et prend en charge des conteneurs Open Container Initiative (OCI), conçus dans le respect des normes du secteur en matière de format et d'exécution des conteneurs. Le projet Buildah vient compléter Podman avec ses capacités de création plus avancées. Podman s'exécute sur diverses distributions Linux, notamment Red Hat Enterprise Linux, Fedora, CentOS et Ubuntu

Chaque pod se compose d'un infraconteneur et de plusieurs conteneurs normaux. L'infraconteneur assure l'exécution du pod et la maintenance des espaces de noms d'utilisateurs, qui isolent les conteneurs des hôtes. Les autres conteneurs contiennent chacun un moniteur qui surveille leurs processus et cherchent les conteneurs inactifs, c'est-à-dire ceux qui ne fonctionnent pas, mais qui ne peuvent pas être retirés de l'environnement, car certaines de leurs ressources sont encore en cours d'utilisation.

Podman se démarque des autres moteurs de conteneurs, car il n'a pas de démon. Les démons sont des processus qui tournent en arrière-plan pour exécuter les conteneurs sans interface utilisateur. Ils jouent le rôle d'intermédiaire entre l'utilisateur et le conteneur. 

Bien qu'ils représentent un moyen pratique de gérer l'environnement de conteneurs, les démons risquent aussi d'y introduire des vulnérabilités. En effet, la plupart s'exécutent avec des privilèges root. Sur les systèmes Linux, le compte root fonctionne comme un superutilisateur qui dispose d'un accès administrateur (sans vérification de la part d'un administrateur) pour la lecture des fichiers, l'installation des programmes, la modification des applications, etc. Par conséquent, ils représentent une cible idéale pour les pirates qui cherchent à prendre le contrôle des conteneurs et à infiltrer le système hôte. 

Podman se passe de démon et permet aux utilisateurs normaux d'exécuter des conteneurs sans interagir avec un démon root, ou permet l'utilisation de conteneurs rootless. En mode rootless, les utilisateurs peuvent créer, exécuter et gérer des conteneurs sans processus qui nécessitent des privilèges d'administrateur. Ainsi, l'environnement de conteneurs devient plus accessible et les risques sont réduits. En outre, Podman lance chaque conteneur avec une étiquette SELinux qui donne aux administrateurs plus de contrôle sur les ressources et capacités allouées aux processus des conteneurs.

Les utilisateurs peuvent ouvrir Podman à partir de la ligne de commande afin qu'il extraie des conteneurs d'un référentiel et les exécute. Podman appelle l'environnement d'exécution du conteneur configuré pour créer le conteneur en cours d'exécution. Puisqu'il n'a pas de démon, Podman utilise systemd, un gestionnaire de systèmes et services pour les systèmes d'exploitation Linux, afin d'effectuer les mises à jour et d'assurer le fonctionnement des conteneurs en arrière-plan. L'intégration de systemd et Podman permet de générer des unités de contrôle pour les conteneurs et de les exécuter avec systemd activé automatiquement.

Les utilisateurs peuvent gérer leurs propres référentiels sur le système, ainsi que des unités systemd pour contrôler le lancement et la gestion automatiques de leurs propres conteneurs. Lorsqu'ils sont autorisés à gérer leurs propres ressources et à exécuter leurs conteneurs en mode rootless, les utilisateurs sont moins tentés de recourir à des pratiques de gestion peu recommandables, telles que l'accès libre en écriture au répertoire /var/lib/containers pour tous, qui peuvent exposer les applications à des risques inutiles. Avec cette approche, chaque utilisateur dispose aussi de son propre ensemble de conteneurs et d'images, ce qui permet à plusieurs personnes d'utiliser Podman en même temps, sur le même hôte, sans interférence. Une fois leur travail terminé, les utilisateurs peuvent mettre leurs images modifiées à disposition des autres dans un registre commun.

Podman déploie également une API RESTful ou API REST (pour « REpresentational State Transfer ») afin de gérer les conteneurs. Une API REST est une interface de programmation d'application qui respecte les contraintes du style d'architecture REST et permet d'interagir avec les services web RESTful. Cette API REST permet d'appeler Podman depuis des plateformes telles que cURL, Postman, le client Advanced REST de Google et bien d'autres.

Puisque Podman est un moteur de conteneurs modulaire, il a besoin de recourir à des outils tels que Buildah et Skopeo pour créer et déplacer ses conteneurs. Buildah permet de créer des conteneurs à partir de zéro ou d'une image préexistante. Skopeo déplace les images de conteneurs entre plusieurs types de systèmes de stockage, ce qui permet de copier des images entre les registres tels que docker.io, quay.io et le registre interne ou différents types d'espaces de stockage sur le système local. Cette approche modulaire de la conteneurisation offre un environnement flexible et léger, réduit les frais et isole les fonctions dont vous avez besoin pour atteindre vos objectifs. Les petits outils modulaires sont en outre plus faciles à faire évoluer, et chacun a une fonction qui lui est propre. 

Ensemble, Podman, Buildah et Skopeo forment une solution complète et spécialisée qui convient à quasiment tous les cas d'utilisation des conteneurs, Podman étant l'outil principal. 

Par défaut, Podman et Buildah utilisent runC, l'environnement d'exécution OCI, pour lancer des conteneurs. On peut soit créer et exécuter une image, soit exécuter des images au format docker avec runC. Cet outil basé sur le langage Go lit les caractéristiques d'un environnement d'exécution, configure le noyau Linux et crée, puis démarre, les processus de conteneurs. Pour utiliser Podman dans d'autres environnements, tels que crun, il suffit d'effectuer quelques changements de configuration.

Docker est une technologie de conteneurisation qui permet la création et l'utilisation de conteneurs Linux. La principale différence entre Podman et Docker réside dans l'architecture sans démon de Podman. Les conteneurs Podman ont toujours été rootless, alors que le mode rootless n'a été introduit que récemment dans la configuration du démon de Docker. Enfin, Docker est un outil polyvalent qui sert aussi bien à la création qu'à la gestion des conteneurs, alors que Podman est plus spécialisé et s'associe à d'autres outils, tels que Buildah et Skopeo, pour permettre la personnalisation des conteneurs selon les besoins des applications cloud-native. 

Si Podman remplace avantageusement Docker, les deux fonctionnent également très bien ensemble. Les utilisateurs peuvent basculer facilement entre les deux grâce à l'alias docker=podman, et vice-versa. De plus, un fichier .rpm appelé podman-docker peut lancer une commande « docker » sur le chemin d'application système qui appelle Podman pour les environnements où la commande « docker » est requise, ce qui simplifie la transition depuis Docker. L'interface en ligne de commande est similaire au moteur de conteneurs Docker. Ainsi, les utilisateurs qui connaissent l'un pourront se servir de l'autre sans problème. 

Certains développeurs exploitent Podman et Docker ensemble. Ils utilisent Docker pendant la phase de développement, puis transfèrent leur programme vers Podman dans des environnements d'exécution afin de profiter de son meilleur niveau de sécurité. 

Podman convient mieux aux développeurs qui exécutent des conteneurs sans Kubernetes ni OpenShift Container Platform. CRI-O est un moteur de conteneurs Open Source communautaire destiné aux outils d'orchestration des conteneurs Kubernetes, tels que Red Hat OpenShift® Container Platform.

Podman a révolutionné le monde des conteneurs en offrant les mêmes capacités performantes que les moteurs de conteneurisation leaders sur le marché, avec un niveau de flexibilité, d'accessibilité et de sécurité supérieur qui répond aux attentes actuelles de nombreux développeurs. Podman peut vous aider à :

  • gérer les images de conteneurs et le cycle de vie complet des conteneurs, notamment l'exécution, la mise en réseau, la création de points de contrôle et le retrait ;
  • exécuter et isoler des ressources pour les conteneurs et pods rootless ;
  • prendre en charge les images OCI et Docker, ainsi qu'une interface en ligne de commande compatible avec Docker ;
  • créer des environnements sans démon pour renforcer la sécurité et réduire la consommation de ressources inactives ; 
  • déployer une API REST pour prendre en charge les fonctionnalités avancées de Podman ;
  • mettre en œuvre des fonctions de point de contrôle/restauration pour les conteneurs Linux avec l'outil checkpoint/restore in userspace (CRIU), qui permet de « geler » un conteneur en cours d'exécution et d'enregistrer le contenu de sa mémoire ainsi que son état sur un disque afin que les charges de travail conteneurisées puissent redémarrer plus rapidement ;
  • mettre à jour les conteneurs automatiquement, car Podman détecte si le lancement d'une mise à jour de conteneur échoue, et restaure automatiquement la dernière version fonctionnelle, ce qui renforce la fiabilité des applications. 

Podman est inclus dans les souscriptions pour Red Hat Enterprise Linux. Vous pouvez ainsi exécuter des conteneurs OCI créés avec une image UBI fiable et prise en charge. La solution Red Hat Enterprise Linux est couramment utilisée pour l'exécution des conteneurs Linux en entreprise. Elle permet aux développeurs de simplifier la mise en route des conteneurs, de gérer les déploiements et d'accélérer le développement des nouvelles applications. En créant des applications et conteneurs portables sur Red Hat Enterprise Linux pour l'ensemble du cloud hybride ouvert, vous pouvez préserver l'agilité de votre entreprise et atteindre vos objectifs de transformation même lorsqu'ils évoluent.

La console web Red Hat Enterprise Linux simplifie le déploiement et l'administration quotidienne de vos systèmes grâce à une interface web facile à utiliser. Podman est disponible en tant que composant de la console web pour vous permettre de gérer les conteneurs et les images. Surveillez l'utilisation du processeur et de la mémoire par vos conteneurs en accédant aux hôtes de conteneur et en suivant l'utilisation du système dans le tableau de bord de la console web. La console web vous permet de simplifier les tâches courantes ainsi que les opérations complexes pour rationaliser la gestion de vos conteneurs.

Grâce aux playbooks Ansible, Red Hat Ansible® Automation Platform vous permet d'automatiser les fonctions de Podman telles que l'installation, le déploiement des conteneurs, ainsi que d'autres tâches chronophages et gourmandes en ressources. 

Podman ainsi que d'autres outils de conteneurisation basés sur des normes ouvertes font de Red Hat Enterprise Linux un hôte de conteneurs puissant qui fournit une prise en charge, une stabilité et des fonctions de sécurité adaptées à la production, en plus d'une voie vers Kubernetes et Red Hat OpenShift.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.