Podman est un moteur de conteneurs développé par Red Hat à partir de 2017.
Sa différence fondamentale avec Docker ne réside pas dans les commandes, mais dans l’architecture.
Docker repose sur un démon qui tourne en permanence avec les privilèges root, et c’est ce service en arrière-plan qui crée et supervise les conteneurs. Podman fonctionne lui sur un modèle fork-exec : lorsque vous tapez une commande, il appelle directement le runtime OCI pour lancer le conteneur, et le processus du conteneur devient un enfant de Podman lui-même. Cette conception réduit la surface d’attaque puisqu’il n’y a pas de service root résident à compromettre, et elle fait du mode rootless le comportement par défaut.
Red Hat a développé Podman précisément parce que l’architecture de Docker posait problème dans les environnements de production critiques. Le démon Docker, constamment actif et disposant des droits root, constitue un point de défaillance unique et une cible de choix pour un attaquant. Podman élimine ce niveau intermédiaire : chaque conteneur est lancé par le processus utilisateur lui-même, ce qui signifie qu’une évasion de conteneur ne donne accès qu’aux droits de cet utilisateur, pas à ceux du système entier.
Sur le plan des parts de marché, Docker reste largement dominant. L’enquête Stack Overflow de 2025 indiquait que 71,1 % des développeurs utilisaient intensivement Docker, contre 11,1 % pour Podman. Ce dernier progresse toutefois rapidement, passant d’environ 5 % en 2024 à 11,1 % en 2025. Dans les environnements d’entreprise, sa part est plus élevée, estimée entre 19 et 23 %, portée par des exigences de sécurité, l’absence de coût de licence et son intégration native avec Red Hat Enterprise Linux et OpenShift.
Installation et utilisation de Podman
Sur Ubuntu 26.04, Podman est disponible directement dans les dépôts officiels.
sudo apt update
sudo apt install podman -y
Vérifiez que l’installation s’est bien déroulée.
podman --version
La sortie attendue ressemble à podman version 5.7.0. Vous pouvez tester immédiatement avec un conteneur simple.
podman run hello-world
Pour conserver vos habitudes de frappe sans réécrire vos scripts, créez un alias dans votre fichier de configuration shell.
echo "alias docker=podman" >> ~/.bashrc
source ~/.bashrc
À partir de là, docker ps exécutera en réalité podman ps, et ainsi de suite. Notez toutefois que Podman est plus strict que Docker sur la résolution des noms d’images courts. Si vous tapez podman pull nginx:alpine sans préciser le registre, vous risquez une erreur. La solution la plus simple est d’utiliser systématiquement le nom complet, comme docker.io/library/nginx:alpine, ou de configurer les registres de recherche dans /etc/containers/registries.conf.
Voici les correspondances directes entre les commandes Docker que vous connaissez et leurs équivalents Podman. La quasi-totalité des commandes de base sont identiques au nom du binaire près.
# Télécharger une image
podman pull docker.io/library/nginx:alpine
# Lancer un conteneur
podman run -d --name mon-nginx -p 8080:80 docker.io/library/nginx:alpine
# Lister les conteneurs en cours d'exécution
podman ps
# Lister tous les conteneurs, y compris ceux qui sont arrêtés
podman ps -a
# Lister les images locales
podman images
# Arrêter un conteneur
podman stop mon-nginx
# Supprimer un conteneur
podman rm mon-nginx
# Supprimer une image
podman rmi docker.io/library/nginx:alpine
# Exécuter une commande dans un conteneur en cours
podman exec -it mon-nginx /bin/bash
# Consulter les logs d'un conteneur
podman logs mon-nginx
# Voir les ressources consommées en temps réel
podman stats
# Inspecter un conteneur ou une image
podman inspect mon-nginx
# Construire une image depuis un Dockerfile
podman build -t mon-image:latest .
# Se connecter à un registre
podman login docker.io
# Voir les volumes
podman volume ls
# Voir les réseaux
podman network ls
Pour Docker Compose, deux approches sont possibles. La première consiste à activer le socket de Podman et à laisser Docker Compose s’y connecter. Podman expose une socket compatible avec l’API Docker, ce qui permet à l’outil docker compose officiel de fonctionner en arrière-plan sur Podman, sans rien installer d’autre.
# Activer la socket Podman au niveau utilisateur
systemctl --user enable --now podman.socket
# Indiquer à Docker Compose où trouver cette socket
export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
# Vos commandes habituelles fonctionnent désormais
docker compose up -d
docker compose ps
docker compose logs
docker compose down
La seconde approche consiste à utiliser podman-compose, disponible directement dans les dépôts officiels d’Ubuntu 26.04
sudo apt update
sudo apt install podman-compose
Vérifiez ensuite que l’outil est bien en place.
podman-compose --version
podman-compose lit les mêmes fichiers docker-compose.yml, compose.yaml ou container-compose.yml que vous utilisez déjà. Les commandes reprennent la syntaxe de Docker Compose, ce qui limite la réécriture de vos scripts et de vos habitudes.
# Démarrer les services en arrière-plan
podman-compose up -d
# Voir l'état des services
podman-compose ps
# Consulter les logs de tous les services
podman-compose logs
# Suivre les logs d'un service en particulier
podman-compose logs -f web
# Arrêter et supprimer les conteneurs
podman-compose down
# Arrêter et supprimer les conteneurs ainsi que les volumes nommés
podman-compose down -v
# Exécuter une commande dans un service en cours
podman-compose exec web /bin/bash
# Reconstruire les images avant de démarrer
podman-compose up -d --build
# Mettre à jour les images et redémarrer
podman-compose pull
podman-compose up -d
La différence entre les deux méthodes tient à la manière dont elles interagissent avec Podman. podman-compose est un outil indépendant qui appelle directement le CLI Podman pour lire et exécuter le fichier compose, sans dépendre du binaire Docker Compose ni de la variable DOCKER_HOST. Cette approche est plus cohérente quand on veut se passer complètement de l’écosystème Docker, mais sa couverture de la spécification Compose reste moins complète que celle de l’outil officiel. Les projets simples, du type serveur web avec base de données et cache, fonctionnent sans problème. Les configurations plus avancées, comme les healthchecks conditionnels complexes, le passage de GPU ou certains modes réseau particuliers, peuvent rencontrer des limites.
Quelques ajustements pratiques restent utiles à connaître. En mode rootless, Podman ne peut pas lier directement les ports inférieurs à 1024, donc un mapping 80:80 devra devenir 8080:80 ou nécessiter un ajustement du paramètre système net.ipv4.ip_unprivileged_port_start. Si vous migrez vos images depuis Docker, vous pouvez les exporter avec docker save puis les importer avec podman load, sachant que Podman stocke ses images dans ~/.local/share/containers et non dans le répertoire de Docker.
La transition depuis Docker vers Podman sous Ubuntu 26.04 ne demande donc pas d’apprendre un nouvel outil, mais plutôt de changer quelques réflexes liés aux noms d’images et aux privilèges de ports, tout en conservant l’essentiel de votre flux de travail existant.
