Skip to content

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 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.


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.


Avant toute installation, mettez à jour la liste des paquets disponibles :

Terminal window
sudo apt update

Sur Debian 13, Podman est disponible dans les dépôts officiels. La version fournie est récente (Podman 5.4.2+ds1-2).

Terminal window
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 :

Terminal window
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

Terminal window
podman version

Sortie attendue (sur Debian 13) : version 5.4.x.

Terminal window
podman info

Points à vérifier :

  • host.security.rootless: true (Linux)
  • store.graphDriverName: overlay
  • host.ociRuntime.name: crun ou runc
Terminal window
podman run --rm docker.io/library/alpine echo "Podman fonctionne !"

Sortie attendue :

Podman fonctionne !

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 :

Terminal window
cat /etc/subuid
cat /etc/subgid

Sortie attendue (avec votre nom d’utilisateur) :

votre_utilisateur:100000:65536

Si les lignes n’existent pas, ajoutez-les :

Terminal window
sudo usermod --add-subuids 100000-165535 $USER
sudo usermod --add-subgids 100000-165535 $USER
Terminal window
podman system migrate

Sortie attendue : aucune erreur.

Contrairement à Docker qui stocke tout dans /var/lib/docker/ (accessible uniquement par root), Podman rootless utilise votre dossier personnel :

Terminal window
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.


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 :

Terminal window
podman pull alpine

Podman 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 :

Terminal window
sudo nano /etc/containers/registries.conf

Recherchez 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.io en tête pour qu’il soit utilisé en premier.

Si vous préférez une configuration propre à votre utilisateur, créez ou éditez le fichier :

Terminal window
nano ~/.config/containers/registries.conf

Ajoutez la même ligne :

unqualified-search-registries = ["docker.io"]

Aucun redémarrage n’est nécessaire : la configuration est relue à chaque commande.


Testez avec une commande sans registre explicite :

Terminal window
podman pull alpine

Podman utilisera désormais docker.io/library/alpine automatiquement.

Vous pouvez aussi vérifier la résolution avec :

Terminal window
podman pull --log-level=debug alpine 2>&1 | grep -i "searching"

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 :

Terminal window
sudo apt install -y podman-compose

Vérification :

Terminal window
podman-compose --version

Commande intégrée à Podman qui agit comme un wrapper. Elle lance un fournisseur externe (docker-compose ou podman-compose).

Terminal window
podman compose --version
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

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 :

Terminal window
sudo usermod --add-subuids 100000-165535 $USER
sudo usermod --add-subgids 100000-165535 $USER
podman system migrate

Cause : Namespace utilisateur non initialisé.

Solution :

Terminal window
podman system migrate

Problè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 :

Terminal window
podman run --userns=keep-id -v /chemin/hote:/chemin/conteneur mon_image

Solution 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 :

Terminal window
podman run -v /chemin/hote:/chemin/conteneur:U mon_image

Problè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 :

Après l’installation, exécutez la commande podman system migrate pour vérifier que Podman est correctement configuré :

Terminal window
admin@ip-172-31-36-153:~$ podman system migrate
WARN[0000] The cgroupv2 manager is set to systemd but there is no systemd user session available
WARN[0000] For using systemd, you may need to log in using a user session
WARN[0000] Alternatively, you can enable lingering with: `loginctl enable-linger 1000` (possibly as root)
WARN[0000] Falling back to --cgroup-manager=cgroupfs
WARN[0000] The cgroupv2 manager is set to systemd but there is no systemd user session available
WARN[0000] For using systemd, you may need to log in using a user session
WARN[0000] Alternatively, you can enable lingering with: `loginctl enable-linger 1000` (possibly as root)
WARN[0000] Falling back to --cgroup-manager=cgroupfs

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 :

  1. Systemd est le gestionnaire de cgroups par défaut, mais aucune session utilisateur systemd persistante n’est détectée.
  2. Podman bascule automatiquement sur cgroupfs (un gestionnaire alternatif).
  3. Ces avertissements sont non bloquants : vos conteneurs fonctionneront normalement.

Pour éliminer ces avertissements et permettre à Podman d’utiliser systemd de manière optimale :

Terminal window
# 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 compte
loginctl 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”
Terminal window
# Redémarrer le service utilisateur podman
systemctl --user restart podman.service
# ou
systemctl --user restart podman.socket

Relancez podman system migrate pour vérifier que les avertissements ont disparu :

Terminal window
podman system migrate

Normalement, 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

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 :


Bonne continuation !
Junior TSAFACK – 09/08/2026