
Vous voulez apprendre les conteneurs sans vous noyer dans les commandes ? Podman Desktop est votre porte d’entrée. Ce guide vous enseigne les concepts fondamentaux — images, conteneurs, volumes, réseaux — en vous montrant visuellement ce qui se passe à chaque étape.
Pourquoi Podman Desktop ?
Section intitulée « Pourquoi Podman Desktop ? »Podman est un moteur de conteneurs (comme Docker). Mais par défaut, il s’utilise en ligne de commande. Podman Desktop ajoute une interface graphique qui vous permet de :
| Ce que vous voulez faire | CLI (texte) | Desktop (visuel) |
|---|---|---|
| Voir les conteneurs qui tournent | podman ps | Liste avec états colorés |
| Lire les logs | podman logs mon-app | Onglet Logs, temps réel |
| Ouvrir un terminal dans le conteneur | podman exec -it mon-app sh | Clic → onglet Terminal |
| Voir l’utilisation CPU/mémoire | podman stats | Graphiques en direct |
| Comprendre les erreurs | Messages bruts | Diagnostics guidés |
Desktop ne remplace pas la CLI, il la complète. Vous apprenez visuellement, puis vous passez à la CLI quand vous êtes prêt.
Comment Podman Desktop fonctionne
Section intitulée « Comment Podman Desktop fonctionne »Selon votre système d’exploitation, l’architecture est différente. Comprendre cela vous évitera beaucoup de confusion.
Sur Linux : communication directe
Section intitulée « Sur Linux : communication directe »Desktop parle directement au moteur Podman qui tourne sur votre machine. Simple.
Sur macOS et Windows : une VM intermédiaire
Section intitulée « Sur macOS et Windows : une VM intermédiaire »Les conteneurs Linux ne peuvent pas tourner nativement sur macOS ou Windows. Podman crée donc une machine virtuelle (VM) Linux légère :
Installation pas à pas
Section intitulée « Installation pas à pas »Ce que vous allez installer
Section intitulée « Ce que vous allez installer »- Podman (le moteur qui fait tourner les conteneurs)
- Podman Desktop (l’interface graphique)
Étape 1 : Installer le moteur Podman
Section intitulée « Étape 1 : Installer le moteur Podman »# Debian / Ubuntusudo apt update && sudo apt install -y podman
# Fedorasudo dnf install -y podmanÉtape 2 : Vérifier que ça fonctionne
Section intitulée « Étape 2 : Vérifier que ça fonctionne »podman --versionVous devez voir quelque chose comme :
podman version 5.4.0Étape 3 : Installer Podman Desktop
Section intitulée « Étape 3 : Installer Podman Desktop »Méthode recommandée — Flatpak :
flatpak install flathub io.podman_desktop.PodmanDesktopOu téléchargez depuis podman-desktop.io/downloads.
Ce que vous allez installer
Section intitulée « Ce que vous allez installer »- Podman Desktop (inclut le moteur)
- Une Machine (VM Linux qui exécute les conteneurs)
Étape 1 : Installer avec Homebrew
Section intitulée « Étape 1 : Installer avec Homebrew »brew install podman-desktopCela installe Desktop et les outils nécessaires.
Étape 2 : Créer et démarrer la Machine
Section intitulée « Étape 2 : Créer et démarrer la Machine »La Machine est la VM Linux dans laquelle tourneront vos conteneurs :
# Créer la Machine avec les paramètres par défautpodman machine init
# Démarrer la Machinepodman machine startÉtape 3 : Vérifier que ça fonctionne
Section intitulée « Étape 3 : Vérifier que ça fonctionne »podman machine listVous devez voir :
NAME VM TYPE RUNNINGpodman-machine-default* applehv RunningCe que vous allez installer
Section intitulée « Ce que vous allez installer »- WSL2 (sous-système Linux pour Windows)
- Podman Desktop (installe le reste automatiquement)
- Une Machine (VM Linux dans WSL2)
Étape 1 : Installer Podman Desktop
Section intitulée « Étape 1 : Installer Podman Desktop »Téléchargez depuis podman-desktop.io/downloads
Étape 2 : Suivre l’assistant d’onboarding
Section intitulée « Étape 2 : Suivre l’assistant d’onboarding »Au premier lancement, Desktop vous guide :
- Vérification de WSL2 — Si absent, Desktop propose de l’installer
- Installation du moteur Podman — Automatique
- Création de la Machine — Cliquez “Create”
Checkpoint : tout est prêt
Section intitulée « Checkpoint : tout est prêt »Lancez Podman Desktop. Quel que soit votre système, vous devez voir :
- ✅ “Podman is running” avec un point vert
- ✅ La version de Podman affichée
- ✅ Sur macOS/Windows : la Machine dans l’état “Running”

Exercice 1 : Lancer votre premier conteneur
Section intitulée « Exercice 1 : Lancer votre premier conteneur »Objectif : comprendre le cycle de vie d’un conteneur (créer → démarrer → utiliser → arrêter → supprimer).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Télécharger une image depuis un registre
- Créer un conteneur à partir d’une image
- Accéder à votre application via le navigateur
- Voir les logs du conteneur
- Nettoyer proprement
Étape 1 : Télécharger une image
Section intitulée « Étape 1 : Télécharger une image »Une image est un “modèle” de conteneur. Nous allons utiliser nginx, un serveur web populaire, dans sa version légère alpine.
- Dans le menu gauche, cliquez sur Images
- Cliquez sur Pull an image
- Tapez :
docker.io/library/nginx:alpine - Cliquez Pull image
Attendez que le téléchargement se termine. L’image apparaît dans la liste.
podman pull docker.io/library/nginx:alpineÉtape 2 : Créer et démarrer un conteneur
Section intitulée « Étape 2 : Créer et démarrer un conteneur »- Dans Images, trouvez
nginx:alpine - Cliquez sur l’icône ▶️ (Run)
- Configurez :
- Container name :
mon-premier-conteneur - Port mapping : Host port
8080, Container port80
- Container name :
- Cliquez Start Container
podman run -d --name mon-premier-conteneur -p 8080:80 nginx:alpineExplication des options :
-d: détaché (tourne en arrière-plan)--name: nom pour identifier le conteneur-p 8080:80: redirige le port 8080 de votre PC vers le port 80 du conteneur
Étape 3 : Vérifier que ça fonctionne
Section intitulée « Étape 3 : Vérifier que ça fonctionne »Ouvrez votre navigateur à l’adresse : http://localhost:8080
Vous devez voir :
Welcome to nginx!🎉 Félicitations ! Vous avez lancé un serveur web dans un conteneur.
Étape 4 : Explorer le conteneur
Section intitulée « Étape 4 : Explorer le conteneur »Voir les logs
Section intitulée « Voir les logs »Les logs vous montrent ce qui se passe à l’intérieur du conteneur.
- Allez dans Containers
- Cliquez sur
mon-premier-conteneur - Onglet Logs
Rafraîchissez la page http://localhost:8080 — vous voyez apparaître les requêtes HTTP dans les logs.
podman logs mon-premier-conteneurPour suivre en temps réel :
podman logs -f mon-premier-conteneur(Ctrl+C pour arrêter)

Ouvrir un terminal dans le conteneur
Section intitulée « Ouvrir un terminal dans le conteneur »Vous pouvez “entrer” dans le conteneur pour explorer son système de fichiers.
- Cliquez sur le conteneur
- Onglet Terminal
- Tapez des commandes Linux :
whoami # → rootcat /etc/os-release # → Alpine Linuxls /usr/share/nginx/html/ # → la page webpodman exec -it mon-premier-conteneur sh-it: mode interactif avec terminalsh: le shell à exécuter
Pour sortir : tapez exit

Étape 5 : Arrêter et supprimer
Section intitulée « Étape 5 : Arrêter et supprimer »- Dans Containers, trouvez votre conteneur
- Cliquez sur ⏹️ Stop
- Une fois arrêté, cliquez sur 🗑️ Delete
# Arrêterpodman stop mon-premier-conteneur
# Supprimerpodman rm mon-premier-conteneurOu en une commande (force l’arrêt et supprime) :
podman rm -f mon-premier-conteneurRécapitulatif de l’exercice 1
Section intitulée « Récapitulatif de l’exercice 1 »| Action | Desktop | CLI |
|---|---|---|
| Télécharger une image | Images → Pull | podman pull |
| Créer un conteneur | Image → Run | podman run |
| Voir les logs | Containers → Logs | podman logs |
| Terminal dans le conteneur | Containers → Terminal | podman exec -it |
| Arrêter | ⏹️ Stop | podman stop |
| Supprimer | 🗑️ Delete | podman rm |
Exercice 2 : Comprendre pourquoi les volumes sont essentiels
Section intitulée « Exercice 2 : Comprendre pourquoi les volumes sont essentiels »Objectif : découvrir que les modifications dans un conteneur sont perdues à la suppression, puis apprendre à les sauvegarder.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Pourquoi les conteneurs sont “éphémères”
- La différence entre le système de fichiers du conteneur et vos fichiers
- Comment utiliser les volumes pour persister des données
Le problème : tout disparaît
Section intitulée « Le problème : tout disparaît »-
Lancez un conteneur nginx
Fenêtre de terminal podman run -d --name test-ephemere -p 8080:80 nginx:alpine -
Modifiez la page web
Fenêtre de terminal podman exec test-ephemere sh -c 'echo "<h1>Ma super page</h1>" > /usr/share/nginx/html/index.html' -
Vérifiez
Ouvrez http://localhost:8080 — vous voyez “Ma super page”.
-
Supprimez le conteneur
Fenêtre de terminal podman rm -f test-ephemere -
Relancez un conteneur
Fenêtre de terminal podman run -d --name test-ephemere -p 8080:80 nginx:alpine -
Vérifiez à nouveau
http://localhost:8080 → “Welcome to nginx!”
Votre modification a disparu. 😱
# Nettoyez avant de continuerpodman rm -f test-ephemereLa solution : les volumes
Section intitulée « La solution : les volumes »Un volume est un espace de stockage extérieur au conteneur. Il survit à la suppression du conteneur.
Exercice : utiliser un volume pour sauvegarder
Section intitulée « Exercice : utiliser un volume pour sauvegarder »-
Créez un volume nommé
- Menu Volumes → Create volume
- Nom :
mes-pages-web - Cliquez Create
Fenêtre de terminal podman volume create mes-pages-web -
Lancez un conteneur qui utilise ce volume
Fenêtre de terminal podman run -d --name nginx-persistent -p 8080:80 \-v mes-pages-web:/usr/share/nginx/html \nginx:alpineL’option
-v mes-pages-web:/usr/share/nginx/htmldit :“Monte le volume
mes-pages-webdans le dossier/usr/share/nginx/htmldu conteneur.” -
Créez du contenu
Fenêtre de terminal podman exec nginx-persistent sh -c 'echo "<h1>Contenu persistant !</h1>" > /usr/share/nginx/html/index.html'Vérifiez : http://localhost:8080 → “Contenu persistant !”
-
Supprimez le conteneur
Fenêtre de terminal podman rm -f nginx-persistent -
Relancez avec le même volume
Fenêtre de terminal podman run -d --name nginx-persistent -p 8080:80 \-v mes-pages-web:/usr/share/nginx/html \nginx:alpine -
Vérifiez
http://localhost:8080 → “Contenu persistant !” est toujours là ! ✅
Voir les volumes dans Desktop
Section intitulée « Voir les volumes dans Desktop »Dans le menu Volumes, vous voyez :
- Le nom du volume
- Sa taille
- Les conteneurs qui l’utilisent (colonne “Used by”)

Deux types de montages
Section intitulée « Deux types de montages »| Type | Syntaxe | Utilisation |
|---|---|---|
| Volume nommé | -v nom-volume:/chemin | Production — Podman gère le stockage |
| Bind mount | -v /chemin/local:/chemin | Développement — vous éditez les fichiers localement |
Exemple de bind mount (pour le développement) :
# Créez un dossier avec votre sitemkdir -p ~/mon-siteecho "<h1>Édité depuis mon PC</h1>" > ~/mon-site/index.html
# Montez-le dans le conteneurpodman run -d --name nginx-dev -p 8080:80 \ -v ~/mon-site:/usr/share/nginx/html:Z \ nginx:alpineMaintenant, si vous modifiez ~/mon-site/index.html, la modification est
visible immédiatement dans le navigateur.
Nettoyage
Section intitulée « Nettoyage »podman rm -f nginx-persistent nginx-dev# Le volume existe toujours - supprimez-le si vous n'en avez plus besoin :podman volume rm mes-pages-webExercice 3 : Faire communiquer deux conteneurs
Section intitulée « Exercice 3 : Faire communiquer deux conteneurs »Objectif : comprendre comment les conteneurs se parlent entre eux.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Par défaut, les conteneurs sont isolés
- Comment les regrouper pour qu’ils communiquent
- La différence entre Pod et réseau
Scénario
Section intitulée « Scénario »Vous voulez :
- Un serveur web nginx qui répond aux visiteurs
- Une application whoami qui indique quel serveur a répondu
- Que nginx puisse contacter whoami
Solution 1 : le Pod (méthode Podman)
Section intitulée « Solution 1 : le Pod (méthode Podman) »Un Pod est un groupe de conteneurs qui partagent le même “espace réseau”. Ils se voient comme s’ils étaient sur la même machine.
-
Créez un Pod
Fenêtre de terminal podman pod create --name mon-pod -p 8080:80Le pod expose le port 8080 vers l’extérieur. Les conteneurs à l’intérieur partagent ce port.
-
Ajoutez nginx
Fenêtre de terminal podman run -d --pod mon-pod --name nginx nginx:alpine -
Ajoutez whoami
Fenêtre de terminal podman run -d --pod mon-pod --name whoami traefik/whoami --port 8000 -
Vérifiez que nginx peut joindre whoami
Fenêtre de terminal # Depuis nginx, appelez whoami (ils sont sur le même localhost)podman exec nginx wget -qO- http://localhost:8000Vous voyez les informations de whoami — ils communiquent !
Voir le Pod dans Desktop
Section intitulée « Voir le Pod dans Desktop »Dans le menu Pods, vous voyez :
- Le pod
mon-pod - En cliquant dessus : les conteneurs
nginxetwhoamià l’intérieur - L’état de chaque conteneur

Solution 2 : Compose (pour des stacks plus complexes)
Section intitulée « Solution 2 : Compose (pour des stacks plus complexes) »Si vous avez un fichier compose.yaml, Podman sait le lire :
services: web: image: nginx:alpine ports: - "8080:80"
app: image: traefik/whoamipodman compose up -dAvec Compose, chaque service peut joindre l’autre par son nom (web,
app).
Nettoyage
Section intitulée « Nettoyage »# Supprime le pod et tous ses conteneurspodman pod rm -f mon-podQuand passer à la ligne de commande ?
Section intitulée « Quand passer à la ligne de commande ? »Desktop est parfait pour apprendre et diagnostiquer. Mais certaines tâches sont plus efficaces en CLI :
| Tâche | Desktop | CLI |
|---|---|---|
| Découvrir, explorer | ✅ Idéal | ⚠️ Verbeux |
| Diagnostiquer (logs, inspect) | ✅ Visuel | ⚠️ Moins pratique |
| Automatiser (scripts, CI/CD) | ❌ Impossible | ✅ Indispensable |
| Opérations répétitives | ⚠️ Lent | ✅ Rapide |
| Serveurs sans écran | ❌ Impossible | ✅ Seule option |
Dépannage
Section intitulée « Dépannage »”Engine not running”
Section intitulée « ”Engine not running” »Symptôme : Desktop affiche “Engine not running” ou “Podman is not running”.
Cause : Sur macOS/Windows, la Machine (VM) n’est pas démarrée.
Solution :
podman machine startOu dans Desktop : section Podman → Start.
Port déjà utilisé
Section intitulée « Port déjà utilisé »Symptôme : “Bind for 0.0.0.0:8080 failed: port is already allocated”
Cause : Un autre programme utilise déjà ce port.
Solution :
# Trouvez qui utilise le portss -tlnp | grep 8080 # Linuxlsof -i :8080 # macOSPuis arrêtez ce programme, ou utilisez un autre port (-p 8081:80).
Permission denied sur les fichiers montés
Section intitulée « Permission denied sur les fichiers montés »Symptôme : Le conteneur ne peut pas lire/écrire les fichiers montés.
Cause : SELinux (Linux) ou permissions du fichier.
Solution :
# Ajoutez :Z pour les bind mountspodman run -v ~/mon-dossier:/data:Z ...Le conteneur démarre puis s’arrête immédiatement
Section intitulée « Le conteneur démarre puis s’arrête immédiatement »Symptôme : Le conteneur passe à “Exited” en quelques secondes.
Cause : Le processus principal du conteneur s’est terminé (ou a planté).
Solution : Regardez les logs :
podman logs nom-conteneurCe que vous avez appris
Section intitulée « Ce que vous avez appris »Les concepts
- Image = moule, Conteneur = instance
- Les conteneurs sont éphémères par défaut
- Les volumes permettent de persister les données
- Les pods permettent la communication entre conteneurs
Les actions
- Télécharger une image (pull)
- Créer et lancer un conteneur (run)
- Voir les logs et ouvrir un terminal
- Créer et utiliser des volumes
- Regrouper des conteneurs en pod
Prochaines étapes
Section intitulée « Prochaines étapes »Vous maîtrisez maintenant les bases. Voici comment approfondir :