
Ce guide vous permet d'installer Podman sur votre système en mode rootless (sans droits root). Que vous soyez sur Linux, macOS ou Windows, vous aurez un environnement de conteneurs fonctionnel et sécurisé. À la fin, vous saurez :
- Installer Podman sur votre distribution Linux
- Configurer le mode rootless (exécution sans droits root)
- Utiliser Podman Machine sur macOS et Windows
- Vérifier que tout fonctionne avec un conteneur de test
Prérequis
Section intitulée « Prérequis »| Plateforme | Prérequis |
|---|---|
| Linux | Compte utilisateur standard, accès sudo pour l'installation |
| macOS | macOS 13+ (Ventura), Homebrew installé |
| Windows | Windows 10/11, WSL 2 activé ou Hyper-V disponible |
Qu'est-ce que le mode rootless ?
Section intitulée « Qu'est-ce que le mode rootless ? »Avant d'installer, comprenons pourquoi le mode rootless est important.
Par défaut, Podman s'exécute sans droits root (administrateur). Les conteneurs tournent donc avec les permissions de votre compte, pas avec celles de l'administrateur système : un conteneur compromis n'obtient rien de plus que ce que vous pouvez déjà faire.
Pourquoi c'est mieux ?
| 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 |
Choisir sa méthode d'installation
Section intitulée « Choisir sa méthode d'installation »Avant de vous lancer, identifiez la méthode adaptée à votre situation :
Installation sur Linux
Section intitulée « Installation sur Linux »Fedora et RHEL ont Podman nativement, c'est la meilleure expérience car les versions sont toujours à jour.
-
Installer Podman
Fenêtre de terminal sudo dnf install -y podman -
Vérifier la version
Fenêtre de terminal podman versionSortie attendue (les numéros varient selon la distro) :
Client: Podman EngineVersion: 5.x.xAPI Version: 5.x.xGo Version: go1.22.xOS/Arch: linux/amd64 -
Tester avec un conteneur
Fenêtre de terminal podman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman!"Sortie attendue :
Hello Podman!
Sur Ubuntu et Debian, Podman est disponible dans les dépôts natifs. Depuis Debian 13 (trixie) et Ubuntu 25.10, la version fournie est récente ; les versions LTS plus anciennes en embarquent une plus ancienne.
sudo apt updatesudo apt install -y podmanpodman --version| Distribution | Version Podman fournie |
|---|---|
| Debian 13, Ubuntu 25.10 | 5.4 |
| Ubuntu 24.04 LTS | 4.9 |
| Debian 12 | 4.3 |
Validez ensuite l'installation avec un conteneur de test :
podman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman!"Arch Linux propose toujours les dernières versions dans ses dépôts officiels.
-
Installer Podman
Fenêtre de terminal sudo pacman -S podman -
Installer les outils complémentaires (optionnel mais recommandé)
Fenêtre de terminal sudo pacman -S buildah skopeo podman-compose -
Vérifier l'installation
Fenêtre de terminal podman versionpodman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman!"
openSUSE, comme Fedora, est une distribution proche de Red Hat avec un excellent support Podman.
-
Installer Podman
Fenêtre de terminal sudo zypper install podman -
Vérifier l'installation
Fenêtre de terminal podman version -
Tester
Fenêtre de terminal podman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman!"
Configuration du mode rootless sur Linux
Section intitulée « Configuration du mode rootless sur Linux »Après l'installation, vous devez configurer le mode rootless pour profiter de la sécurité maximale.
Vérifier la configuration subuid/subgid
Section intitulée « Vérifier la configuration subuid/subgid »Le mode rootless utilise les user namespaces de Linux. Pour que ça fonctionne, votre utilisateur doit avoir des plages d'UID/GID allouées.
Sur une distribution récente, vous n'aurez probablement rien à faire : les
plages sont posées à la création du compte. Vérifié sur Debian 13, juste
après apt install podman et sans aucune commande supplémentaire, le compte
portait déjà ansible:165536:65536 dans les deux fichiers. Les étapes qui
suivent servent alors de contrôle, et ne deviennent une vraie manipulation
que sur un système plus ancien ou un compte créé à la main.
-
Vérifier que les fichiers existent et contiennent votre utilisateur
Fenêtre de terminal grep $USER /etc/subuid /etc/subgidSortie attendue (avec votre nom d'utilisateur) :
/etc/subuid:bob:100000:65536/etc/subgid:bob:100000:65536Cela signifie que l'utilisateur
bobpeut utiliser 65536 UIDs à partir de 100000. -
Si les lignes n'existent pas, ajoutez-les :
Fenêtre de terminal sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER -
Initialiser le namespace utilisateur
Fenêtre de terminal podman system migrate
Vérifier que le mode rootless est actif
Section intitulée « Vérifier que le mode rootless est actif »podman info --format '{{.Host.Security.Rootless}}'Sortie attendue :
trueOù sont stockées les images en rootless ?
Section intitulée « Où sont stockées les images en rootless ? »Contrairement à Docker qui stocke tout dans /var/lib/docker/ (accessible uniquement par root), Podman rootless utilise votre dossier personnel :
podman info --format '{{.Store.GraphRoot}}'Sortie :
/home/bob/.local/share/containers/storageCela signifie que chaque utilisateur a son propre espace de stockage d'images, totalement isolé.
Installation sur macOS
Section intitulée « Installation sur macOS »macOS ne peut pas exécuter de conteneurs Linux nativement (le noyau est différent). Podman utilise donc une machine virtuelle Linux légère appelée Podman Machine.
Installer Podman via Homebrew
Section intitulée « Installer Podman via Homebrew »-
Installer Homebrew si ce n'est pas déjà fait
La page d'installation officielle propose un
curldirectement branché sur un interpréteur. Ce guide ne le reproduit pas, pour deux raisons : cette forme exécute un script avant que vous l'ayez lu, et une interruption réseau en cours de téléchargement peut faire exécuter un fichier tronqué. Téléchargez d'abord, relisez, exécutez ensuite :Fenêtre de terminal curl -fsSL -o /tmp/homebrew-install.sh \https://raw.githubusercontent.com/Homebrew/install/HEAD/install.shless /tmp/homebrew-install.sh # lecture avant exécution/bin/bash /tmp/homebrew-install.shLe principe vaut bien au-delà de Homebrew : tout installateur distribué par script distant se télécharge, se relit, puis s'exécute.
-
Installer Podman
Fenêtre de terminal brew install podman -
Créer et démarrer la machine virtuelle
Fenêtre de terminal podman machine initpodman machine startLa première exécution télécharge une image Linux (~300 Mo) et crée la VM.
-
Vérifier que tout fonctionne
Fenêtre de terminal podman versionpodman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman on macOS!"
Options de Podman Machine
Section intitulée « Options de Podman Machine »Vous pouvez personnaliser les ressources de la VM lors de la création :
# Machine avec 4 CPUs, 4 Go de RAM, 50 Go de disquepodman machine init --cpus 4 --memory 4096 --disk-size 50
# Démarrerpodman machine startCommandes utiles Podman Machine
Section intitulée « Commandes utiles Podman Machine »| Commande | Description |
|---|---|
podman machine list | Lister les machines |
podman machine start | Démarrer la machine par défaut |
podman machine stop | Arrêter la machine |
podman machine ssh | Se connecter en SSH à la VM |
podman machine rm | Supprimer une machine |
podman machine inspect | Détails de configuration |
Installation sur Windows
Section intitulée « Installation sur Windows »Windows, comme macOS, nécessite une machine virtuelle pour exécuter les conteneurs Linux.
WSL 2 (Windows Subsystem for Linux) offre les meilleures performances.
-
Activer WSL 2 (si pas déjà fait)
Ouvrez PowerShell en tant qu'administrateur :
Fenêtre de terminal wsl --installRedémarrez si demandé.
-
Installer Podman via winget
Fenêtre de terminal winget install RedHat.PodmanOu téléchargez l'installateur MSI depuis github.com/containers/podman/releases.
-
Créer la machine Podman
Ouvrez un terminal (PowerShell ou CMD) :
Fenêtre de terminal podman machine initpodman machine start -
Tester
Fenêtre de terminal podman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo "Hello Podman on Windows!"
Si vous ne pouvez pas utiliser WSL 2, Hyper-V est une alternative.
-
Activer Hyper-V
Panneau de configuration → Programmes → Activer ou désactiver des fonctionnalités Windows → Hyper-V
Ou via PowerShell (admin) :
Fenêtre de terminal Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -
Installer Podman
Fenêtre de terminal winget install RedHat.Podman -
Créer la machine avec le provider HyperV
Fenêtre de terminal podman machine init --provider hypervpodman machine start
Podman Desktop (interface graphique)
Section intitulée « Podman Desktop (interface graphique) »Si vous préférez une interface graphique, Podman Desktop est disponible sur toutes les plateformes.
Installation
Section intitulée « Installation »| Plateforme | Méthode recommandée | Alternative |
|---|---|---|
| macOS | Télécharger .dmg (recommandé) | brew install --cask podman-desktop |
| Windows | winget install RedHat.Podman-Desktop | Télécharger .exe |
| Linux | Flatpak : flatpak install flathub io.podman_desktop.PodmanDesktop | AppImage disponible |
Fonctionnalités principales
Section intitulée « Fonctionnalités principales »- Gestion visuelle des conteneurs, images, pods
- Gestion des machines Podman (macOS/Windows)
- Intégration avec Kubernetes
- Extensions (Kind, OpenShift, etc.)
Vérification de l'installation (toutes plateformes)
Section intitulée « Vérification de l'installation (toutes plateformes) »Quelle que soit votre plateforme, effectuez ces vérifications :
-
Version installée
Fenêtre de terminal podman versionVérifiez que la version est au moins la 5.4. Les branches 5.8 et 6.1 sont les deux séries maintenues aujourd'hui.
-
Informations système
Fenêtre de terminal podman infoPoints à vérifier :
host.security.rootless: true(Linux)store.graphDriverName: overlayhost.ociRuntime.name: crunourunc
-
Test d'exécution
Fenêtre de terminal podman run --rm docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 cat /etc/os-releaseSortie attendue :
NAME="Alpine Linux"ID=alpineVERSION_ID=3.22.6PRETTY_NAME="Alpine Linux v3.22"... -
Test de pull depuis plusieurs registres
Podman ne présume aucun registre par défaut, contrairement à Docker qui complète silencieusement en
docker.io. Tirer une image depuis trois registres différents vérifie que la résolution de nom et le réseau fonctionnent partout, pas seulement sur Docker Hub.Fenêtre de terminal # Docker Hubpodman pull docker.io/library/nginx:1.29.3-alpine@sha256:b3c656d55d7ad751196f21b7fd2e8d4da9cb430e32f646adcf92441b72f82b14# Quay.io (Red Hat)podman pull quay.io/podman/hello:latest@sha256:41316c18917a27a359ee3191fd8f43559d30592f82a144bbc59d9d44790f6e7a# GitHub Container Registrypodman pull ghcr.io/astral-sh/uv:0.9.9@sha256:f6e3549ed287fee0ddde2460a2a74a2d74366f84b04aaa34c1f19fec40da8652
Dépannage
Section intitulée « Dépannage »Erreurs courantes et solutions
Section intitulée « Erreurs courantes et solutions »| Symptôme | Cause probable | Solution |
|---|---|---|
ERRO[0000] cannot find UID/GID | subuid/subgid non configurés | sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER |
Error: rootless mode | Namespace utilisateur non initialisé | podman system migrate |
machine not running (macOS/Windows) | Machine Podman arrêtée | podman machine start |
Error: dial unix | Socket Podman inaccessible | Vérifier que le service fonctionne |
permission denied sur les fichiers | Problème de mapping UID | Utiliser :U ou --userns=keep-id |
no systemd user session available, puis Falling back to --cgroup-manager=cgroupfs | Session sans gestionnaire systemd utilisateur, typiquement une connexion SSH non interactive | sudo loginctl enable-linger $USER, puis rouvrir une session |
« no systemd user session available » : le conteneur tourne quand même
Section intitulée « « no systemd user session available » : le conteneur tourne quand même »C'est le message qui inquiète le plus à la première utilisation, et ce
n'est pas une erreur. Mesuré sur Debian 13 depuis une session SSH, le
tout premier podman run affiche huit lignes d'avertissement avant la sortie
attendue :
level=warning msg="The cgroupv2 manager is set to systemd but there is no systemd user session available"level=warning msg="Alternatively, you can enable lingering with: `loginctl enable-linger 1001` (possibly as root)"level=warning msg="Falling back to --cgroup-manager=cgroupfs"Podman bascule sur cgroupfs et le conteneur s'exécute normalement :
rien n'est cassé. Le remède est celui que le message indique lui-même, mais
il porte un piège qu'il passe sous silence :
| Moment | Lignes d'avertissement |
|---|---|
Avant loginctl enable-linger | 8 |
| Après, dans la même session | 8, inchangé |
| Dans la session suivante | 0 |
Le réglage ne prend pas effet dans la session où vous le posez. Rejouer la commande aussitôt donne l'impression qu'elle ne sert à rien : il faut se déconnecter et se reconnecter pour qu'un gestionnaire systemd utilisateur existe.
Permissions volumes : 2 recettes
Section intitulée « Permissions volumes : 2 recettes »En mode rootless, les problèmes de permissions sur les volumes montés sont la difficulté la plus fréquente : les UIDs du conteneur ne correspondent pas à ceux de l'hôte, et un fichier parfaitement lisible d'un côté ne l'est plus de l'autre.
Recette 1 : --userns=keep-id (aligner les UIDs)
Cette option fait correspondre votre UID réel avec l'UID dans le conteneur :
podman run --rm --userns=keep-id -v ./data:/data:rw docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 ls -la /data→ Votre utilisateur (ex: UID 1000) sera aussi UID 1000 dans le conteneur.
Recette 2 : suffixe :U (chown automatique)
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 --rm -v ./data:/data:U docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 ls -la /dataRedémarrer proprement
Section intitulée « Redémarrer proprement »Si quelque chose ne fonctionne pas :
# Linuxpodman system reset
# macOS/Windowspodman machine stoppodman machine rmpodman machine initpodman machine startChecklist post-installation
Section intitulée « Checklist post-installation »Après installation, vérifiez que tout fonctionne avec cette checklist :
| Vérification | Commande | Résultat attendu |
|---|---|---|
| Version | podman version | Version 5.4 ou supérieure |
| 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 docker.io/library/alpine:3.22@sha256:5291449c3df73caf6ed85e649dec1b9e818b39a5d8c871e97afc13e9cd5e8fa8 echo ok | ok |
| Machine (macOS/Win) | podman machine list | Une machine running |
| SSH machine | podman machine ssh uname -a | Infos Linux affichées |
À retenir
Section intitulée « À retenir »- Podman est rootless par défaut, plus sécurisé, chaque utilisateur a ses propres conteneurs
- Linux : installation native ; sur une distribution récente les plages
/etc/subuidet/etc/subgidsont déjà posées, il suffit de les vérifier - macOS/Windows : utiliser Podman Machine qui crée une VM Linux légère
- Ubuntu/Debian : les dépôts natifs peuvent être en retard, et l'ancien dépôt OBS libcontainers est fermé ; pour une version plus récente, changez de version de distribution ou passez par Homebrew sur Linux
- Vérifier avec
podman infoque le mode rootless est actif et le runtime correct - Problèmes de permissions : utiliser
--userns=keep-idou le suffixe:U
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Options d'exécution avancées : Les options qui comptent une fois les premières commandes acquises.
- Volumes et données persistantes : Le premier sujet à traiter en rootless, où les permissions surprennent.
- Construire une image : Produire ses propres images sans démon ni privilège root.