Aller au contenu
Conteneurs & Orchestration medium

Installer Podman (v5.8) : Ubuntu/Debian, Fedora, macOS, Windows (WSL2/Hyper-V)

15 min de lecture

logo podman

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
PlateformePrérequis
LinuxCompte utilisateur standard, accès sudo pour l’installation
macOSmacOS 13+ (Ventura), Homebrew installé
WindowsWindows 10/11, WSL 2 activé ou Hyper-V disponible

Avant d’installer, comprenons pourquoi le mode rootless est important.

Par défaut, Podman s’exécute sans droits root (administrateur). Cela signifie que les conteneurs tournent avec les permissions de votre utilisateur standard, pas en tant qu’administrateur système.

Pourquoi c’est mieux ?

AspectMode root (traditionnel)Mode rootless (Podman par défaut)
SécuritéUn conteneur compromis peut affecter tout le systèmeUn conteneur compromis n’a que vos droits utilisateur
InstallationNécessite des droits adminFonctionne avec un compte standard
Partage de machineConflits possibles entre utilisateursChaque utilisateur a ses propres conteneurs

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 de vous lancer, identifiez la méthode adaptée à votre situation :

Fedora et RHEL ont Podman nativement — c’est la meilleure expérience car les versions sont toujours à jour.

  1. Installer Podman

    Fenêtre de terminal
    sudo dnf install -y podman
  2. Vérifier la version

    Fenêtre de terminal
    podman version

    Sortie attendue (les numéros varient selon la distro) :

    Client: Podman Engine
    Version: 5.x.x
    API Version: 5.x.x
    Go Version: go1.22.x
    OS/Arch: linux/amd64
  3. Tester avec un conteneur

    Fenêtre de terminal
    podman run --rm alpine echo "Hello Podman!"

    Sortie attendue :

    Hello Podman!

Après l’installation, vous devez configurer le mode rootless pour profiter de la sécurité maximale.

Le mode rootless utilise les user namespaces de Linux. Pour que ça fonctionne, votre utilisateur doit avoir des plages d’UID/GID allouées.

  1. Vérifier que les fichiers existent et contiennent votre utilisateur

    Fenêtre de terminal
    grep $USER /etc/subuid /etc/subgid

    Sortie attendue (avec votre nom d’utilisateur) :

    /etc/subuid:bob:100000:65536
    /etc/subgid:bob:100000:65536

    Cela signifie que l’utilisateur bob peut utiliser 65536 UIDs à partir de 100000.

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

    Fenêtre de terminal
    sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
  3. Initialiser le namespace utilisateur

    Fenêtre de terminal
    podman system migrate
Fenêtre de terminal
podman info --format '{{.Host.Security.Rootless}}'

Sortie attendue :

true

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

Fenêtre de terminal
podman info --format '{{.Store.GraphRoot}}'

Sortie :

/home/bob/.local/share/containers/storage

Cela signifie que chaque utilisateur a son propre espace de stockage d’images, totalement isolé.

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.

  1. Installer Homebrew si ce n’est pas déjà fait

    Fenêtre de terminal
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Installer Podman

    Fenêtre de terminal
    brew install podman
  3. Créer et démarrer la machine virtuelle

    Fenêtre de terminal
    podman machine init
    podman machine start

    La première exécution télécharge une image Linux (~300 Mo) et crée la VM.

  4. Vérifier que tout fonctionne

    Fenêtre de terminal
    podman version
    podman run --rm alpine echo "Hello Podman on macOS!"

Vous pouvez personnaliser les ressources de la VM lors de la création :

Fenêtre de terminal
# Machine avec 4 CPUs, 4 Go de RAM, 50 Go de disque
podman machine init --cpus 4 --memory 4096 --disk-size 50
# Démarrer
podman machine start
CommandeDescription
podman machine listLister les machines
podman machine startDémarrer la machine par défaut
podman machine stopArrêter la machine
podman machine sshSe connecter en SSH à la VM
podman machine rmSupprimer une machine
podman machine inspectDétails de configuration

Windows, comme macOS, nécessite une machine virtuelle pour exécuter les conteneurs Linux.

WSL 2 (Windows Subsystem for Linux) offre les meilleures performances.

  1. Activer WSL 2 (si pas déjà fait)

    Ouvrez PowerShell en tant qu’administrateur :

    Fenêtre de terminal
    wsl --install

    Redémarrez si demandé.

  2. Installer Podman via winget

    Fenêtre de terminal
    winget install RedHat.Podman

    Ou téléchargez l’installateur MSI depuis github.com/containers/podman/releases.

  3. Créer la machine Podman

    Ouvrez un terminal (PowerShell ou CMD) :

    Fenêtre de terminal
    podman machine init
    podman machine start
  4. Tester

    Fenêtre de terminal
    podman run --rm alpine echo "Hello Podman on Windows!"

Si vous préférez une interface graphique, Podman Desktop est disponible sur toutes les plateformes.

PlateformeMéthode recommandéeAlternative
macOSTélécharger .dmg (recommandé)brew install --cask podman-desktop
Windowswinget install RedHat.Podman-DesktopTélécharger .exe
LinuxFlatpak : flatpak install flathub io.podman_desktop.PodmanDesktopAppImage disponible
  • 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 :

  1. Version installée

    Fenêtre de terminal
    podman version

    Vérifiez que la version est 5.x ou supérieure.

  2. Informations système

    Fenêtre de terminal
    podman info

    Points à vérifier :

    • host.security.rootless: true (Linux)
    • store.graphDriverName: overlay
    • host.ociRuntime.name: crun ou runc
  3. Test d’exécution

    Fenêtre de terminal
    podman run --rm docker.io/library/alpine:latest cat /etc/os-release

    Sortie attendue :

    NAME="Alpine Linux"
    ID=alpine
    VERSION_ID=3.19.1
    ...
  4. Test de pull depuis plusieurs registres

    Fenêtre de terminal
    # Docker Hub
    podman pull docker.io/library/nginx:alpine
    # Quay.io (Red Hat)
    podman pull quay.io/podman/hello
    # GitHub Container Registry
    podman pull ghcr.io/homebrew/core/hello:latest
SymptômeCause probableSolution
ERRO[0000] cannot find UID/GIDsubuid/subgid non configuréssudo usermod --add-subuids 100000-165535 $USER
Error: rootless modeNamespace utilisateur non initialisépodman system migrate
machine not running (macOS/Windows)Machine Podman arrêtéepodman machine start
Error: dial unixSocket Podman inaccessibleVérifier que le service fonctionne
permission denied sur les fichiersProblème de mapping UIDUtiliser :U ou --userns=keep-id

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 à ceux du système hôte.

Recette 1 : --userns=keep-id (aligner les UIDs)

Cette option fait correspondre votre UID réel avec l’UID dans le conteneur :

Fenêtre de terminal
podman run --rm --userns=keep-id -v ./data:/data:rw alpine 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 :

Fenêtre de terminal
podman run --rm -v ./data:/data:U alpine ls -la /data

Si quelque chose ne fonctionne pas :

Fenêtre de terminal
# Linux
podman system reset
# macOS/Windows
podman machine stop
podman machine rm
podman machine init
podman machine start

Après installation, vérifiez que tout fonctionne avec cette checklist :

VérificationCommandeRésultat attendu
Versionpodman versionVersion 5.x affichée
Runtimepodman info --format '{{.Host.OCIRuntime.Name}}'crun ou runc
Storage driverpodman info --format '{{.Store.GraphDriverName}}'overlay
Rootless (Linux)podman info --format '{{.Host.Security.Rootless}}'true
Test conteneurpodman run --rm docker.io/library/alpine echo okok
Machine (macOS/Win)podman machine listUne machine running
SSH machinepodman machine ssh uname -aInfos Linux affichées
  1. Podman est rootless par défaut — plus sécurisé, chaque utilisateur a ses propres conteneurs
  2. Linux : installation native, configurer /etc/subuid et /etc/subgid pour le mode rootless
  3. macOS/Windows : utiliser Podman Machine qui crée une VM Linux légère
  4. Ubuntu/Debian : les dépôts natifs peuvent être en retard — utilisez OBS libcontainers pour la v5.x
  5. Vérifier avec podman info que le mode rootless est actif et le runtime correct
  6. Problèmes de permissions : utiliser --userns=keep-id ou le suffixe :U

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.