Présentation
Podman (version contractée de « POD manager ») est un outil Open Source qui sert à développer, gérer et exécuter des conteneurs. 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 sans démon et inclusive fait de Podman une option accessible et sécurisée pour la gestion de conteneurs. En tirant parti des fonctions et outils intégrés, comme Buildah et Skopeo, les équipes de développement peuvent personnaliser leurs environnements de conteneurs pour répondre à leurs besoins. Elles peuvent aussi profiter de Podman Desktop, une interface utilisateur graphique qui permet d'utiliser Podman dans des environnements locaux.
Podman s'exécute sur diverses distributions Linux®, notamment Red Hat Enterprise Linux, Fedora, CentOS et Ubuntu.
Définition d'un pod
Un pod est un groupe de conteneurs qui s'exécutent ensemble et partagent les mêmes ressources, à l'image d'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 interfaces de programmation d'application (API) pour gérer les conteneurs, les pods, les images de conteneurs et les volumes. L'interface en ligne de commande de Podman crée et prend en charge des conteneurs OCI (Open Container Initiative), 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.
Chaque pod se compose d'un infraconteneur et de plusieurs conteneurs normaux. L'infraconteneur assure l'exécution du pod et gère les espaces de noms d'utilisateurs, qui isolent les conteneurs de l'hôte. 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.
Ressources Red Hat
Particularités de Podman par rapport à d'autres moteurs de conteneurs
Podman se démarque des autres moteurs de conteneurs, car il n'a pas de démon, ce qui signifie qu'il ne dépend pas d'un processus avec des privilèges root pour exécuter des conteneurs.
Les démons sont des processus qui tournent en arrière-plan pour exécuter les conteneurs sans interface utilisateur. Les démons 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 car nombre d'entre eux 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 de fichiers, l'installation de programmes, la modification d'applications et d'autres tâches. 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 (Security-Enhanced Linux) qui donne aux administrateurs plus de contrôle sur les ressources et capacités allouées aux processus des conteneurs.
Gestion des conteneurs
Les utilisateurs peuvent invoquer Podman à partir de la ligne de commande pour extraire des conteneurs d'un référentiel et les exécuter. Podman appelle l'environnement d'exécution de 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 de 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 contrôlent le lancement et la gestion automatiques de leurs conteneurs en utilisant leurs propres référentiels sur le système ou des unités systemd. Lorsqu'ils sont autorisés à gérer leurs propres ressources et à exécuter leurs conteneurs en mode rootless, les utilisateurs sont moins tentés d'ajouter des privilèges, comme l'accès en écriture à des branches du système qui ne sont pas concernées. 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, abréviation de « REpresentational State Transfer ». Une API REST est une API qui respecte les contraintes du style d'architecture REST et qui 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.
Podman Desktop
Podman Desktop est une interface utilisateur graphique pour Podman, qui offre un espace de travail centralisé avec les conteneurs pour les équipes de développement sur leur ordinateur portable ou à leur poste de travail. Ces équipes peuvent créer, ajouter et retirer des images, mais également gérer directement les ressources Podman à l'aide d'une interface utilisateur graphique cohérente sur les environnements locaux Linux, Windows et macOS. Avec Podman Desktop, elles peuvent distribuer des applications conteneurisées prêtes à être déployées dans des environnements Kubernetes.
Podman Desktop prend en charge les packs d'extension, qui offrent des fonctionnalités supplémentaires. Par exemple, l'extension Podman AI Lab permet d'ajouter des recettes pour la création d'applications qui fonctionnent avec de grands modèles de langage (LLM) dans un environnement local. En outre, elle comprend un catalogue personnalisé de LLM Open Source. Comme autre exemple, avec le pack d'extension Red Hat pour Podman Desktop, les équipes de développement peuvent travailler avec des technologies Red Hat spécifiques telles que Red Hat OpenShift®.
Chez Red Hat, nous proposons notre propre version de Podman Desktop : Red Hat build of Podman Desktop. Cette application de bureau légère qui intègre des contrôles de sécurité permet de créer, gérer et déployer des conteneurs sous Linux, macOS et Windows. Elle augmente la productivité en offrant une expérience cohérente de développement depuis la machine locale jusqu'aux déploiements en production dans le cloud hybride. Elle est également compatible avec des plateformes comme Red Hat OpenShift et Kubernetes.
Chez Red Hat, nous proposons notre propre version de Podman Desktop : Red Hat build of Podman Desktop. Cette application de bureau légère qui intègre des contrôles de sécurité permet de créer, gérer et déployer des conteneurs sous Linux, macOS et Windows. Elle augmente la productivité en offrant une expérience cohérente de développement depuis la machine locale jusqu'aux déploiements en production dans le cloud hybride. Elle est également compatible avec des plateformes comme Red Hat OpenShift et Kubernetes.
Podman, Buildah et Skopeo
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 entre 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. L'utilisation de conteneurs permet d'opter pour des outils plus petits et plus modulaires qui concentrent leurs efforts sur un objectif unique et qui peuvent être mis à jour aussi souvent que nécessaire.
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 le plus performant de ces outils.
Par défaut, Podman et Buildah utilisent runC, l'environnement d'exécution OCI, pour lancer des conteneurs. Avec runC, il est possible soit de créer et d'exécuter une image, soit d'exécuter des images au format Docker. 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. Il est aussi possible d'utiliser Podman dans d'autres environnements, tels que crun, avec quelques modifications de la configuration.
Podman et Docker
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. Vous pourrez ainsi personnaliser vos environnements avec uniquement les outils dont vous avez besoin.
Si Podman remplace avantageusement Docker, les deux fonctionnent également très bien ensemble. Les utilisateurs peuvent facilement passer de l'un à l'autre grâce à l'alias docker=podman, et inversement. 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 à Docker. Ainsi, les utilisateurs qui connaissent l'un pourront se servir de l'autre sans problème.
Certaines équipes de développement exploitent Podman et Docker ensemble. Elles utilisent Docker pendant la phase de développement, puis transfèrent leur programme vers Podman dans des environnements d'exécution.
Podman convient mieux aux équipes de développement qui exécutent des conteneurs sans Kubernetes ni Red Hat OpenShift Container Platform. Pour les fonctions d'orchestration de conteneurs Kubernetes, il est possible d'utiliser CRI-O, le moteur de conteneurs Open Source et communautaire.
Avantages de Podman
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 des fonctionnalités de flexibilité, d'accessibilité et de sécurité qui répondent aux attentes de nombreuses équipes de développement. Podman aide les utilisateurs à :
- 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 de conteneurs ;
- 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 CRIU (checkpoint/restore in userspace), 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 automatiquement à jour les conteneurs, car Podman détecte si le lancement d'une mise à jour de conteneur échoue, et restaure automatiquement la dernière version fonctionnelle. Cette approche permet de renforcer la fiabilité des applications.
Nos solutions
Podman est inclus dans la souscription Red Hat Enterprise Linux, ce qui permet d'exécuter des conteneurs OCI à l'aide d'une image de base universelle (UBI) fiable, prise en charge et éprouvée. La solution Red Hat Enterprise Linux est couramment utilisée pour exécuter des conteneurs Linux en entreprise. Elle permet aux équipes de développement de mettre en route les conteneurs, de gérer les déploiements et d'accélérer le développement de nouvelles applications avec facilité. La mise à niveau de l'infrastructure Red Hat Enterprise Linux permet d'exploiter pleinement ces avantages. En créant des applications et conteneurs portables sur Red Hat Enterprise Linux pour l'ensemble des environnements de cloud hybride ouvert, les entreprises peuvent préserver leur agilité et poursuivre leur transformation, et ce même lorsque leurs objectifs évoluent.
La console web Red Hat Enterprise Linux simplifie le déploiement et l'administration quotidienne des systèmes grâce à une interface web facile à utiliser. Podman est disponible en tant que composant de la console web pour faciliter la gestion des conteneurs et des images. Surveillez l'utilisation du processeur et de la mémoire par vos conteneurs en accédant aux hôtes de conteneurs et en suivant l'utilisation du système dans le tableau de bord de la console web. Cette dernière permet de simplifier les tâches courantes ainsi que les opérations complexes pour rationaliser la gestion des conteneurs.
Grâce aux playbooks Ansible, Red Hat Ansible® Automation Platform 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, Podman Desktop 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.
Le blog officiel de Red Hat
Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.