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 fonctionnalités 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 bénéficient également de Podman Desktop, une interface utilisateur graphique (GUI) 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.
Un pod, qu'est-ce que c'est ?
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 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 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.
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.
Qu'est-ce qui différencie Podman des 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. 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 (Security-Enhanced Linux) qui donne aux administrateurs plus de contrôle sur les ressources et capacités allouées aux processus des conteneurs.
Comment Podman gère-t-il les 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 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 (pour « REpresentational State Transfer ») afin de gérer les conteneurs. 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, qu'est-ce que c'est ?
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 comme Red Hat OpenShift®.
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 l'outil principal.
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. Pour utiliser Podman dans d'autres environnements, tels que crun, il suffit d'effectuer quelques changements de 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 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 à 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.
Pourquoi choisir 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 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 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 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.
Nos solutions
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 é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 votre infrastructure Red Hat Enterprise Linux vous 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, vous pouvez préserver l'agilité de votre entreprise et continuer votre transformation, même lorsque vos objectifs é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 aider à 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 conteneurs et en suivant l'utilisation du système dans le tableau de bord de la console web. Cette dernière 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, 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.