Installer Podman sur Debian 13
Bonne lecture et bon apprentissage !
Junior TSAFACK – 09/08/2026
⏱️ Temps de lecture estimé : 8 minutes
Ce guide vous permet d’installer Podman sur Debian 13 (Trixie) en mode rootless (sans droits root). Podman est un moteur de conteneurs sans démon obligatoire (daemonless), pensé pour une utilisation Linux native : rootless par défaut, chaque conteneur est un processus indépendant supervisé par conmon.
À la fin de ce guide, vous saurez :
- Installer Podman sur Debian 13
- Configurer le mode rootless (exécution sans droits root)
- Vérifier que tout fonctionne avec un conteneur de test
- Connaître les outils complémentaires pour une expérience complète
Plateforme et prérequis
Section titled “Plateforme et prérequis”| Plateforme | Version | Prérequis |
|---|---|---|
| Linux (Debian) | Debian 13 (Trixie) | Compte utilisateur standard, accès sudo pour l’installation |
Bon à savoir : Debian 13 (Trixie) est la version de développement de Debian. Les commandes et versions indiquées sont valables pour cette version. Pour Debian 12 (Bookworm) ou plus ancien, certaines versions de paquets peuvent différer.
Pourquoi le mode rootless est important
Section titled “Pourquoi le mode rootless est important”Par défaut, Podman s’exécute sans droits root. Cela signifie que les conteneurs tournent avec les permissions de votre utilisateur standard, pas en tant qu’administrateur système.
| Aspect | Mode root (traditionnel) | Mode rootless (Podman par défaut) |
|---|---|---|
| Sécurité | Un conteneur compromis peut affecter tout le système | Un conteneur compromis n’a que vos droits utilisateur |
| Installation | Nécessite des droits admin | Fonctionne avec un compte standard |
| Partage de machine | Conflits possibles entre utilisateurs | Chaque utilisateur a ses propres conteneurs |
| Stockage | /var/lib/containers/ (global) |
~/.local/share/containers/ (utilisateur) |
Analogie : C’est comme avoir un coffre-fort personnel dans votre chambre plutôt qu’un seul coffre partagé à la réception de l’hôtel. Si quelqu’un force votre coffre, il n’accède qu’à vos affaires, pas à celles de tout le monde.
Installation
Section titled “Installation”Étape 1 : Mettre à jour les dépôts
Section titled “Étape 1 : Mettre à jour les dépôts”Avant toute installation, mettez à jour la liste des paquets disponibles :
sudo apt updateÉtape 2 : Installer Podman
Section titled “Étape 2 : Installer Podman”Sur Debian 13, Podman est disponible dans les dépôts officiels. La version fournie est récente (Podman 5.4.2+ds1-2).
sudo apt install -y podmanÉtape 3 : Installer les outils complémentaires (recommandé)
Section titled “Étape 3 : Installer les outils complémentaires (recommandé)”Pour une expérience complète, installez ces paquets supplémentaires :
sudo apt install -y crun dbus-user-session uidmap podman-compose fuse-overlayfs slirp4netns containers-storage passt criu libcriu2 catatonit polkitd| Paquet | Utilité |
|---|---|
crun |
Runtime OCI rapide et léger (alternative à runc) |
uidmap |
Permet le mapping UID/GID pour le mode rootless |
dbus-user-session |
Session D-Bus par utilisateur (nécessaire pour systemd) |
slirp4netns |
Fournit le réseau en mode rootless |
fuse-overlayfs |
Stockage overlayfs en mode rootless |
podman-compose |
Outil de composition de conteneurs (alternative à docker-compose) |
passt |
Alternative réseau rootless plus performante |
Vérification de l’installation
Section titled “Vérification de l’installation”Vérifier la version
Section titled “Vérifier la version”podman versionSortie attendue (sur Debian 13) : version 5.4.x.
Vérifier les informations système
Section titled “Vérifier les informations système”podman infoPoints à vérifier :
host.security.rootless: true(Linux)store.graphDriverName: overlayhost.ociRuntime.name: crunourunc
Tester avec un conteneur
Section titled “Tester avec un conteneur”podman run --rm docker.io/library/alpine echo "Podman fonctionne !"Sortie attendue :
Podman fonctionne !Configuration du mode rootless
Section titled “Configuration du mode rootless”Vérifier la configuration subuid/subgid
Section titled “Vérifier la configuration subuid/subgid”Le mode rootless utilise les user namespaces de Linux. Pour que cela fonctionne, votre utilisateur doit avoir des plages d’UID/GID allouées.
Vérifier que les fichiers existent et contiennent votre utilisateur :
cat /etc/subuidcat /etc/subgidSortie attendue (avec votre nom d’utilisateur) :
votre_utilisateur:100000:65536Si les lignes n’existent pas, ajoutez-les :
sudo usermod --add-subuids 100000-165535 $USERsudo usermod --add-subgids 100000-165535 $USERInitialiser le namespace utilisateur
Section titled “Initialiser le namespace utilisateur”podman system migrateSortie attendue : aucune erreur.
Emplacement de stockage
Section titled “Emplacement de stockage”Contrairement à Docker qui stocke tout dans /var/lib/docker/ (accessible uniquement par root), Podman rootless utilise votre dossier personnel :
ls ~/.local/share/containers/Cela signifie que chaque utilisateur a son propre espace de stockage d’images, totalement isolé.
Pour répondre à votre demande, voici comment vous pouvez ajouter une section dans votre guide concernant la configuration des registres pour que Podman utilise automatiquement docker.io lorsque vous tirez une image sans spécifier de registre.
Comportement par défaut
Section titled “Comportement par défaut”Par défaut, Podman s’appuie sur le fichier de configuration /etc/containers/registries.conf (ou ~/.config/containers/registries.conf pour l’utilisateur) pour connaître la liste des registres non qualifiés (unqualified-search-registries).
Lorsque vous exécutez une commande comme :
podman pull alpinePodman va parcourir les registres listés dans cet ordre, et tenter de résoudre alpine (par exemple docker.io/library/alpine, quay.io/alpine, etc.).
Si docker.io n’est pas dans cette liste, la résolution échouera ou utilisera un autre registre (par exemple registry.fedoraproject.org sur certaines distributions).
Sur Debian 13, la liste par défaut ne contient pas toujours docker.io ; il faut donc l’ajouter explicitement.
Configuration pour inclure docker.io comme registre par défaut
Section titled “Configuration pour inclure docker.io comme registre par défaut”1. Modifier le fichier global (recommandé pour tous les utilisateurs)
Section titled “1. Modifier le fichier global (recommandé pour tous les utilisateurs)”Éditez /etc/containers/registries.conf avec les droits sudo :
sudo nano /etc/containers/registries.confRecherchez la ligne unqualified-search-registries (ou créez-la) et ajoutez "docker.io" en premier :
unqualified-search-registries = ["docker.io", "registry.fedoraproject.org", "quay.io"]Note : L’ordre détermine la priorité. Mettez
docker.ioen tête pour qu’il soit utilisé en premier.
2. Configuration utilisateur (sans sudo)
Section titled “2. Configuration utilisateur (sans sudo)”Si vous préférez une configuration propre à votre utilisateur, créez ou éditez le fichier :
nano ~/.config/containers/registries.confAjoutez la même ligne :
unqualified-search-registries = ["docker.io"]3. Appliquer la modification
Section titled “3. Appliquer la modification”Aucun redémarrage n’est nécessaire : la configuration est relue à chaque commande.
Vérification
Section titled “Vérification”Testez avec une commande sans registre explicite :
podman pull alpinePodman utilisera désormais docker.io/library/alpine automatiquement.
Vous pouvez aussi vérifier la résolution avec :
podman pull --log-level=debug alpine 2>&1 | grep -i "searching"Outils complémentaires : Podman Compose
Section titled “Outils complémentaires : Podman Compose”Podman propose deux approches pour gérer des applications multi-conteneurs :
1. podman-compose (solution communautaire)
Section titled “1. podman-compose (solution communautaire)”C’est l’outil le plus proche de docker-compose. Il lit les fichiers docker-compose.yml sans modification.
Installation :
sudo apt install -y podman-composeVérification :
podman-compose --version2. podman compose (wrapper officiel)
Section titled “2. podman compose (wrapper officiel)”Commande intégrée à Podman qui agit comme un wrapper. Elle lance un fournisseur externe (docker-compose ou podman-compose).
podman compose --versionComparaison des deux approches
Section titled “Comparaison des deux approches”| Fonctionnalité | podman compose (officiel) |
podman-compose (communauté) |
|---|---|---|
| Nature | Wrapper qui appelle un fournisseur externe | Implémentation autonome en Python |
| Compatibilité | Dépend du fournisseur installé | Lit les fichiers Compose sans modification |
| Utilisation en rootless | Oui | Oui |
Dépannage
Section titled “Dépannage”Problème : ERRO[0000] cannot find UID/GID
Section titled “Problème : ERRO[0000] cannot find UID/GID”Cause : subuid/subgid non configurés.
Solution :
sudo usermod --add-subuids 100000-165535 $USERsudo usermod --add-subgids 100000-165535 $USERpodman system migrateProblème : Error: rootless mode
Section titled “Problème : Error: rootless mode”Cause : Namespace utilisateur non initialisé.
Solution :
podman system migrateProblème : Problèmes de permissions sur les volumes montés
Section titled “Problème : Problèmes de permissions sur les volumes montés”En mode rootless, les problèmes de permissions sur les volumes montés sont fréquents car les UIDs dans le conteneur ne correspondent pas toujours à ceux du système hôte.
Solution 1 : --userns=keep-id
Cette option fait correspondre votre UID réel avec l’UID dans le conteneur :
podman run --userns=keep-id -v /chemin/hote:/chemin/conteneur mon_imageSolution 2 : suffixe :U
Le suffixe :U sur un volume indique à Podman de changer récursivement le propriétaire des fichiers pour correspondre à l’UID du conteneur :
podman run -v /chemin/hote:/chemin/conteneur:U mon_imageProblème : permission denied sur les fichiers
Section titled “Problème : permission denied sur les fichiers”Cause : Problème de mapping UID.
Solution : Utiliser :U ou --userns=keep-id comme ci-dessus.
Voici le contenu formaté en Markdown, prêt à être intégré dans votre cours :
Vérification du gestionnaire de cgroups
Section titled “Vérification du gestionnaire de cgroups”Après l’installation, exécutez la commande podman system migrate pour vérifier que Podman est correctement configuré :
admin@ip-172-31-36-153:~$ podman system migrateWARN[0000] The cgroupv2 manager is set to systemd but there is no systemd user session availableWARN[0000] For using systemd, you may need to log in using a user sessionWARN[0000] Alternatively, you can enable lingering with: `loginctl enable-linger 1000` (possibly as root)WARN[0000] Falling back to --cgroup-manager=cgroupfsWARN[0000] The cgroupv2 manager is set to systemd but there is no systemd user session availableWARN[0000] For using systemd, you may need to log in using a user sessionWARN[0000] Alternatively, you can enable lingering with: `loginctl enable-linger 1000` (possibly as root)WARN[0000] Falling back to --cgroup-manager=cgroupfsExplication des avertissements
Section titled “Explication des avertissements”Ces avertissements apparaissent lorsque vous utilisez Podman en mode rootless (sans privilèges root) sur un serveur, notamment lors d’une connexion SSH temporaire. Ils indiquent que :
- Systemd est le gestionnaire de cgroups par défaut, mais aucune session utilisateur systemd persistante n’est détectée.
- Podman bascule automatiquement sur cgroupfs (un gestionnaire alternatif).
- Ces avertissements sont non bloquants : vos conteneurs fonctionneront normalement.
Solution : Activer le “lingering”
Section titled “Solution : Activer le “lingering””Pour éliminer ces avertissements et permettre à Podman d’utiliser systemd de manière optimale :
# Vérifier votre UID (normalement 1000)id -u
# Activer le lingering pour l'utilisateur courant (UID 1000 par défaut)sudo loginctl enable-linger 1000
# Vérifier que la configuration est prise en compteloginctl show-user $USER | grep LingerÀ savoir : Le “lingering” permet aux processus utilisateur (comme les conteneurs Podman) de continuer à s’exécuter même après la déconnexion de la session SSH. C’est fortement recommandé en production pour assurer la stabilité de vos services.
Ces avertissements sont normaux sur une instance AWS lorsque vous utilisez Podman en mode rootless et que vous vous connectez en SSH sans avoir activé le “lingering” (qui permet aux processus utilisateur de continuer à tourner après la déconnexion).
Redémarrer Podman pour prendre en compte le changement
Section titled “Redémarrer Podman pour prendre en compte le changement”# Redémarrer le service utilisateur podmansystemctl --user restart podman.service# ousystemctl --user restart podman.socketRelancez podman system migrate pour vérifier que les avertissements ont disparu :
podman system migrateNormalement, plus d’avertissements, ou seulement si vous êtes encore en SSH (une nouvelle session sera nécessaire).
Si vous voulez éviter de redémarrer votre session
Section titled “Si vous voulez éviter de redémarrer votre session”Après avoir activé le lingering, vous pouvez lancer une nouvelle session SSH ou utiliser su - $USER pour recréer un environnement systemd.
Checklist de vérification post-installation
Section titled “Checklist de vérification post-installation”| Vérification | Commande | Résultat attendu |
|---|---|---|
| Version | podman version |
Version 5.x affichée |
| Runtime | podman info --format '{{.Host.OCIRuntime.Name}}' |
crun ou runc |
| Storage driver | podman info --format '{{.Store.GraphDriverName}}' |
overlay |
| Rootless (Linux) | podman info --format '{{.Host.Security.Rootless}}' |
true |
| Test conteneur | podman run --rm alpine echo ok |
ok |
| Podman Compose | podman-compose --version |
Version affichée |
Prochaines étapes
Section titled “Prochaines étapes”Maintenant que Podman est installé et configuré, vous pouvez :
- Découvrir les commandes essentielles de Podman (pull, run, ps, stop, rm)
- Apprendre à gérer des conteneurs rootless avec systemd et pods
- Utiliser Podman Desktop pour une interface graphique
- Créer et gérer des pods (groupes de conteneurs)
- Utiliser les volumes et les réseaux avec Podman
- Mettre en place des applications multi-conteneurs avec
podman-compose
Références :
- Documentation officielle de Podman
- Podman sur GitHub
- Documentation officielle – Registries configuration
Bonne continuation !
Junior TSAFACK – 09/08/2026