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.