Aller au contenu
Conteneurs & Orchestration medium

Commandes essentielles Podman

28 min de lecture

logo podman

Quand vous travaillez avec des conteneurs, vous passez la majorité de votre temps à lancer des conteneurs, consulter leurs logs, exécuter des commandes dedans et nettoyer les ressources. Podman est un moteur de conteneurs rootless compatible Docker qui vous permet de gérer images et conteneurs sans privilèges root.

  • Rechercher, télécharger et gérer des images
  • Lancer des conteneurs en avant-plan et arrière-plan
  • Interagir avec des conteneurs en cours d'exécution (exec, logs, cp)
  • Exposer des ports et monter des volumes
  • Diagnostiquer et nettoyer vos ressources

Podman fait partie d'un écosystème d'outils complémentaires. Chaque outil a sa spécialité :

CommandeSpécialitéQuand l'utiliser
podmanExécuter et gérer les conteneursrun, ps, exec, logs, stop, rm
buildahConstruire des imagesBuild avancé, multi-stage, rootless
skopeoCopier des images entre registriesMirroring, air-gap, inspection
podman-composeOrchestrer plusieurs conteneursStack multi-conteneurs (comme docker-compose)

Combinaisons fréquentes :

Fenêtre de terminal
# buildah + podman : construire puis lancer
buildah build -t mon-app . && podman run mon-app
# skopeo + podman : copier puis exécuter
skopeo copy docker://nginx:alpine oci-archive:nginx.tar
podman load < nginx.tar && podman run nginx:alpine
# podman + grep : filtrer les logs
podman logs mon-app | grep ERROR

🧠 Modèle mental — Comment fonctionne Podman

podman = Image → Conteneur → Processus isolé (rootless par défaut)

Modèle mental Podman : Registry → Image → Conteneur → Processus isolé via conmon

Points clés

  • Une image est un modèle en lecture seule (template)
  • Un conteneur est une instance exécutable d'une image
  • Chaque conteneur est un processus isolé supervisé par conmon
  • Mode rootless par défaut = pas de privilèges root nécessaires
  • Les données sont perdues à la suppression du conteneur (sauf volumes)
  • Les commandes sont compatibles Docker (alias docker=podman)

Règles d'or

1
Toujours nommer vos conteneurs Utilisez --name pour éviter les IDs aléatoires difficiles à retenir.
2
Utiliser --rm pour les conteneurs jetables --rm supprime le conteneur automatiquement à l'arrêt, évite l'accumulation.
3
Préférer les tags explicites aux :latest :latest change sans prévenir. Utilisez :3.20, :1.25 pour la reproductibilité.

Vocabulaire essentiel

image
Modèle en lecture seule contenant l'application et ses dépendances
conteneur
Instance exécutable d'une image (processus isolé)
registry
Serveur qui stocke et distribue les images (Docker Hub, Quay.io)
tag
Version ou variante d'une image (alpine:3.20, nginx:1.25)
volume
Stockage persistant indépendant du cycle de vie du conteneur
port mapping
Liaison port hôte → port conteneur (-p 8080:80)
📚 Pour aller plus loin — 8 options avancées
rootless
Exécution sans privilèges root (user namespaces)
conmon
Superviseur léger qui maintient le conteneur
pod
Groupe de conteneurs partageant le même namespace réseau
bind mount
Montage direct d'un dossier hôte dans le conteneur
overlay
Système de fichiers en couches pour les images
entrypoint
Commande par défaut exécutée au démarrage du conteneur
CMD
Arguments par défaut passés à l'entrypoint
namespace
Isolation des ressources (PID, network, mount, user)

Contrairement à Docker qui nécessite un daemon root, Podman exécute chaque conteneur comme un processus indépendant supervisé par conmon. C'est rootless par défaut.

Fenêtre de terminal
podman <commande> [options] [arguments]

Commandes les plus utilisées :

CommandeDescriptionExemple
runCréer et démarrer un conteneurpodman run -d nginx
psLister les conteneurspodman ps -a
execExécuter une commande dans un conteneurpodman exec -it web sh
logsAfficher les logspodman logs -f web
stop / startArrêter / démarrer un conteneurpodman stop web
rmSupprimer un conteneurpodman rm web
imagesLister les imagespodman images
pullTélécharger une imagepodman pull alpine:3.20

Podman repose sur quelques concepts essentiels :

ConceptCe que c'estExemple
ImageModèle en lecture seulenginx:alpine, alpine:3.20
ConteneurInstance exécutable d'une imagepodman run nginx crée un conteneur
RegistryServeur de distribution d'imagesDocker Hub, Quay.io, GHCR
VolumeStockage persistantpodman run -v data:/app/data
Port mappingExposition réseaupodman run -p 8080:80

La commande podman run est la plus utilisée. Voici ses options principales :

OptionForme longueDescription
-d--detachExécuter en arrière-plan
-it--interactive --ttyMode interactif avec terminal
--rmSupprimer après arrêt
--nameNommer le conteneur
-p--publishMapper un port hôte:conteneur
-e--envDéfinir une variable d'environnement
-v--volumeMonter un volume

Formes courantes :

Fenêtre de terminal
# Conteneur jetable interactif
podman run -it --rm alpine:3.20 sh
# Service en arrière-plan
podman run -d --name web -p 8080:80 nginx:alpine
# Avec volume et variable d'environnement
podman run -d --name db -v pgdata:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=secret postgres:16

Un conteneur passe par plusieurs états :

Created → Running → Paused/Exited → Removed
ÉtatSignificationCommande pour y arriver
CreatedConteneur créé mais pas démarrépodman create
RunningEn cours d'exécutionpodman start ou podman run
PausedProcessus gelés (SIGSTOP)podman pause
ExitedArrêté (code de sortie)podman stop ou fin du processus
RemovedSupprimépodman rm
ErreurCauseSolution
name already in useConteneur existant avec ce nompodman rm -f nom ou --replace
image not knownImage non téléchargéepodman pull docker.io/library/image:tag
address already in usePort déjà utiliséChanger le port (-p 8081:80)
permission deniedProblème rootless/SELinux--userns=keep-id ou :Z sur volume
Conteneur s'arrête immédiatementCMD se termineUtiliser un processus persistant

Une image est un modèle en lecture seule contenant l'application et ses dépendances.

Fenêtre de terminal
# Rechercher une image
podman search docker.io/alpine --limit 3
# Télécharger une image (avec tag explicite)
podman pull docker.io/library/alpine:3.20
# Lister les images locales
podman images

Résultat podman images :

REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/alpine 3.20 cc9071bd1610 2 weeks ago 8.1 MB
docker.io/library/nginx alpine b76de378d572 8 days ago 63.5 MB
Fenêtre de terminal
# Détails d'une image (format Go template)
podman image inspect alpine:3.20 --format 'ID: {{.Id}} | Size: {{.Size}}'
# Supprimer une image
podman rmi alpine:3.20
# Supprimer toutes les images non utilisées
podman image prune -a
Fenêtre de terminal
podman run docker.io/library/alpine:3.20 echo "Hello Podman"

Le conteneur exécute la commande, affiche le résultat, puis s'arrête.

Fenêtre de terminal
podman run -d --name mon-nginx -p 8080:80 docker.io/library/nginx:alpine
OptionDescription
-dDétaché (arrière-plan)
--name mon-nginxNom explicite pour référencer facilement
-p 8080:80Port 8080 sur l'hôte → port 80 du conteneur

Vérification :

Fenêtre de terminal
curl localhost:8080
Fenêtre de terminal
podman run -it --rm docker.io/library/alpine:3.20 sh

Vous obtenez un shell dans le conteneur. Tapez exit pour quitter. --rm supprime le conteneur à la sortie.

Fenêtre de terminal
# Conteneurs en cours d'exécution
podman ps
# Tous les conteneurs (y compris arrêtés)
podman ps -a
# Format personnalisé
podman ps --format "{{.Names}}: {{.Image}} ({{.Status}})"
Fenêtre de terminal
# Configuration complète (JSON)
podman inspect mon-nginx
# Extraire un champ spécifique
podman inspect --format '{{.NetworkSettings.IPAddress}}' mon-nginx
# Voir les processus
podman top mon-nginx
# Voir les ports exposés
podman port mon-nginx
Fenêtre de terminal
# Commande simple
podman exec mon-nginx cat /etc/nginx/nginx.conf
# Shell interactif
podman exec -it mon-nginx sh
# En tant que root (même en rootless)
podman exec -u root mon-nginx whoami
Fenêtre de terminal
# Tous les logs
podman logs mon-nginx
# Dernières 20 lignes
podman logs --tail 20 mon-nginx
# Suivre en temps réel (comme tail -f)
podman logs -f mon-nginx
# Avec timestamps
podman logs -t mon-nginx
Fenêtre de terminal
# Vers le conteneur
podman cp config.yml mon-nginx:/etc/nginx/
# Depuis le conteneur
podman cp mon-nginx:/etc/nginx/nginx.conf ./backup/
# Vérifier les modifications du filesystem
podman diff mon-nginx
Fenêtre de terminal
# Arrêter (SIGTERM puis SIGKILL après timeout)
podman stop mon-nginx
# Arrêter immédiatement (SIGKILL)
podman kill mon-nginx
# Redémarrer
podman restart mon-nginx
# Démarrer un conteneur arrêté
podman start mon-nginx
# Mettre en pause / reprendre
podman pause mon-nginx
podman unpause mon-nginx
Fenêtre de terminal
# Statistiques en temps réel
podman stats
# Snapshot (sans rafraîchissement)
podman stats --no-stream
# Espace disque utilisé
podman system df

Exemple de sortie podman stats :

ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO PIDS
a79693ad4f28 mon-nginx 0.04% 10.89MB / 50.28GB 0.02% 110B / 430B 17
Fenêtre de terminal
# Supprimer un conteneur arrêté
podman rm mon-nginx
# Forcer la suppression (même si running)
podman rm -f mon-nginx
# Supprimer tous les conteneurs arrêtés
podman rm $(podman ps -aq --filter status=exited)
# Nettoyage automatique (conteneurs + images non utilisées)
podman system prune
# Nettoyage complet (inclut volumes orphelins)
podman system prune -a --volumes -f
Fenêtre de terminal
# Exporter une image en archive tar
podman save docker.io/library/alpine:3.20 -o alpine.tar
# Importer une archive
podman load -i alpine.tar
# Taguer une image (créer un alias)
podman tag alpine:3.20 mon-registre/alpine:stable
# Exporter un conteneur en image
podman commit mon-nginx mon-nginx-custom:v1

Maintenant que vous comprenez les commandes de base, voici des recettes prêtes à l'emploi pour les usages les plus fréquents. Chacune associe une formule générique et un exemple concret à adapter.

Tester une commande ou explorer une image, sans rien laisser derrière.

Fenêtre de terminal
# Formule
podman run -it --rm <image> <shell>
# Exemple
podman run -it --rm alpine:3.20 sh
  • -it : interactif avec TTY ; --rm : supprime le conteneur à l'arrêt.

Lancer un service qui tourne en continu.

Fenêtre de terminal
# Formule
podman run -d --name <nom> <image>
# Exemple
podman run -d --name mon-nginx nginx:alpine
  • -d : mode détaché ; --name : nomme le conteneur pour le retrouver facilement.

Rendre un service accessible depuis l'hôte.

Fenêtre de terminal
# Formule
podman run -d -p <hôte>:<conteneur> <image>
# Exemple
podman run -d -p 8080:80 --name web nginx:alpine
  • -p 8080:80 : mappe le port 8080 de l'hôte sur le port 80 du conteneur.

Partager des fichiers entre l'hôte et le conteneur.

Fenêtre de terminal
# Formule
podman run -v <chemin_hôte>:<chemin_conteneur> <image>
# Exemple
podman run -v ~/data:/app/data:Z alpine ls /app/data
  • :Z : relabeling SELinux ; :ro : montage en lecture seule.

Configurer l'application via son environnement.

Fenêtre de terminal
# Formule
podman run -e VAR=valeur <image>
# Exemple
podman run -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=app postgres:16
  • -e VAR=val : définit une variable ; --env-file : charge depuis un fichier.

Inspecter un conteneur déjà en cours d'exécution.

Fenêtre de terminal
# Formule
podman exec -it <conteneur> <shell>
# Exemple
podman exec -it mon-nginx sh
  • -it : interactif avec TTY ; -u root : exécute en tant que root.

Monitorer l'activité d'un conteneur.

Fenêtre de terminal
# Formule
podman logs -f <conteneur>
# Exemple
podman logs -f --tail 50 mon-nginx
  • -f : suit en temps réel ; --tail N : limite aux N dernières lignes ; -t : affiche les timestamps.

Supprimer toutes les ressources inutilisées et libérer de l'espace.

Fenêtre de terminal
# Formule
podman system prune -a
# Exemple
podman system prune -a --volumes -f
  • -a : inclut les images non utilisées ; --volumes : inclut les volumes orphelins ; -f : sans confirmation.

Obtenir une information précise d'un conteneur, utile en scripting.

Fenêtre de terminal
# Formule
podman inspect --format '{{.Field}}' <conteneur>
# Exemple
podman inspect --format '{{.NetworkSettings.IPAddress}}' mon-nginx
  • --format : template Go ; {{.State.Status}} : état du conteneur.

Contrôler la consommation CPU et mémoire d'un conteneur.

Fenêtre de terminal
# Formule
podman run --memory=<limit> --cpus=<N> <image>
# Exemple
podman run -d --memory=512m --cpus=1 --name limited nginx:alpine
  • --memory : limite mémoire (512m, 1g) ; --cpus : nombre de CPUs ; --pids-limit : nombre de processus.

Surveiller automatiquement la santé d'un service.

Fenêtre de terminal
# Formule
podman run --health-cmd="<cmd>" --health-interval=<durée> <image>
# Exemple
podman run -d --health-cmd="curl -f http://localhost/" --health-interval=30s nginx:alpine
  • --health-cmd : commande de vérification ; --health-interval : intervalle entre les contrôles.

Transférer des fichiers depuis ou vers un conteneur.

Fenêtre de terminal
# Formule
podman cp <src> <dest>
# Exemple
podman cp mon-nginx:/etc/nginx/nginx.conf ./backup/
  • La syntaxe conteneur:chemin désigne un emplacement dans le conteneur.

Ces erreurs reviennent constamment avec Podman. Plusieurs touchent la persistance des données ou le mode rootless : les connaître évite des pertes et des blocages.

Fenêtre de terminal
podman run --name mon-app image

Symptôme : erreur container name is already in use.

Cause : un conteneur, même arrêté, existe déjà avec ce nom.

Fenêtre de terminal
podman rm -f mon-app && podman run --name mon-app image
# ou directement
podman run --replace --name mon-app image
Fenêtre de terminal
podman run alpine

Symptôme : erreur image not known ou manifest unknown.

Cause : Podman ne trouve pas l'image dans ses registres configurés.

Fenêtre de terminal
podman pull docker.io/library/alpine:3.20
podman run docker.io/library/alpine:3.20
Fenêtre de terminal
podman run -p 8080:80 nginx

Symptôme : erreur bind: address already in use.

Cause : un autre processus ou conteneur occupe déjà ce port.

Fenêtre de terminal
# Trouver qui utilise le port
ss -tlnp | grep 8080
# Utiliser un autre port
podman run -p 8081:80 nginx
Fenêtre de terminal
podman run -v ~/data:/app/data image

Symptôme : erreur de permission sur les fichiers montés.

Cause : le mapping d'UID en mode rootless ou SELinux bloque l'accès.

Fenêtre de terminal
podman run --userns=keep-id -v ~/data:/app/data image
# ou avec SELinux
podman run -v ~/data:/app/data:Z image
Fenêtre de terminal
podman run nginx

Symptôme : le comportement change après un pull.

Cause : :latest n'est pas une version fixe, elle évolue sans prévenir. Spécifiez toujours un tag de version explicite.

Fenêtre de terminal
podman run nginx:1.25-alpine

Vous lancez postgres, puis supprimez le conteneur avec podman rm.

Symptôme : les données disparaissent à la suppression du conteneur.

Cause : les données écrites dans le conteneur sont éphémères.

Fenêtre de terminal
podman run -v postgres_data:/var/lib/postgresql/data postgres:16
Fenêtre de terminal
podman run -p 80:80 nginx

Symptôme : permission denied au moment du bind.

Cause : les ports inférieurs à 1024 sont réservés à root par défaut.

Fenêtre de terminal
# Utiliser un port haut
podman run -p 8080:80 nginx
# ou autoriser les ports bas
sudo sysctl net.ipv4.ip_unprivileged_port_start=80
Fenêtre de terminal
podman run -d alpine

Symptôme : le conteneur passe en Exited (0) aussitôt après le démarrage.

Cause : le processus principal (CMD) se termine instantanément. Un conteneur vit tant que son processus principal tourne.

Fenêtre de terminal
# Garder actif avec un processus durable
podman run -d alpine sleep infinity
# ou lancer un service qui reste actif
podman run -d nginx

Ce lab vous fait manipuler Podman du téléchargement d'image à la consultation de logs. Comptez 20 minutes.

Le script suivant crée un dossier de travail avec une configuration et des données de test :

Fenêtre de terminal
# Créer le lab
mkdir -p ~/podman-lab/data ~/podman-lab/config
cd ~/podman-lab
# Créer un fichier de configuration de test
cat > config/app.conf << 'EOF'
# Configuration de test
APP_NAME=demo
APP_PORT=8080
DEBUG=true
EOF
# Créer des données de test
echo "Données de test $(date)" > data/test.txt
# Vérifier que Podman fonctionne
podman version
echo "Lab créé dans ~/podman-lab"
ls -la ~/podman-lab

Pour tout nettoyer à la fin : podman rm -f $(podman ps -aq --filter "name=test-") 2>/dev/null; rm -rf ~/podman-lab.

  1. Télécharger une imagepodman pull docker.io/library/alpine:3.20. Le préfixe docker.io/library/ désigne les images officielles ; :3.20 fixe la version.

  2. Lancer un conteneur simplepodman run --rm docker.io/library/alpine:3.20 echo "Hello Podman". --rm supprime le conteneur après exécution ; echo remplace le CMD par défaut.

  3. Conteneur en arrière-planpodman run -d --name test-bg docker.io/library/alpine:3.20 sleep 300. -d détache le conteneur ; --name le rend facile à référencer.

  4. Exécuter une commande dans un conteneurpodman exec test-bg cat /etc/os-release. exec lance une commande dans un conteneur déjà en cours d'exécution.

  5. Shell interactifpodman exec -it test-bg sh. -i garde stdin ouvert, -t alloue un pseudo-terminal. Tapez exit pour sortir.

  6. Consulter les logspodman run -d --name test-nginx docker.io/library/nginx:alpine && podman logs --tail 5 test-nginx. --tail N limite aux N dernières lignes.

Ces exercices vont du lancement d'un conteneur simple à la limitation de ressources. Lisez l'énoncé, cherchez la commande, puis dépliez la solution.

Exercice 1 — Lancer un conteneur nginx. Lancez un conteneur nginx en arrière-plan, nommé web, accessible sur le port 8080.

Indice : -d pour l'arrière-plan, -p pour le port, --name pour le nom.

Voir la solution
Fenêtre de terminal
podman run -d --name web -p 8080:80 docker.io/library/nginx:alpine

-d détache, -p 8080:80 mappe le port, --name identifie le conteneur. curl localhost:8080 doit ensuite répondre.

Exercice 2 — Consulter les logs nginx. Affichez les 10 dernières lignes de logs du conteneur web, avec les timestamps.

Indice : --tail pour limiter, -t pour les timestamps.

Voir la solution
Fenêtre de terminal
podman logs --tail 10 -t web

--tail N limite aux N dernières lignes, -t ajoute la date et l'heure.

Exercice 3 — Shell dans le conteneur. Ouvrez un shell interactif dans le conteneur web et vérifiez la version de nginx.

Indice : -it pour le mode interactif, puis nginx -v.

Voir la solution
Fenêtre de terminal
podman exec -it web sh
# Puis dans le shell :
nginx -v

-it combine interactif et TTY pour obtenir un shell fonctionnel.

Exercice 4 — Monter un volume. Lancez un conteneur alpine qui affiche le contenu de ~/podman-lab/data, monté en /data.

Indice : -v source:destination.

Voir la solution
Fenêtre de terminal
podman run --rm -v ~/podman-lab/data:/data:Z alpine ls -la /data

-v monte un dossier de l'hôte ; :Z gère le relabeling SELinux si nécessaire.

Exercice 5 — Variables d'environnement. Lancez un conteneur postgres avec POSTGRES_PASSWORD=secret et POSTGRES_DB=demo.

Indice : un -e par variable, ou --env-file.

Voir la solution
Fenêtre de terminal
podman run -d --name pg -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=demo postgres:16-alpine

-e définit une variable ; on peut en enchaîner plusieurs.

Exercice 6 — Inspecter l'IP d'un conteneur. Récupérez l'adresse IP du conteneur web avec --format.

Indice : --format avec le template Go {{.NetworkSettings.IPAddress}}.

Voir la solution
Fenêtre de terminal
podman inspect --format '{{.NetworkSettings.IPAddress}}' web

inspect renvoie un JSON complet ; --format en extrait un champ précis.

Exercice 7 — Nettoyage des ressources. Supprimez tous les conteneurs arrêtés et les images non utilisées.

Indice : podman system prune avec les bonnes options.

Voir la solution
Fenêtre de terminal
podman system prune -a -f

-a inclut les images non utilisées, -f exécute sans demander confirmation.

Exercice 8 — Conteneur avec limite de ressources. Lancez un conteneur nginx avec au maximum 256 Mo de RAM et 0,5 CPU.

Indice : --memory et --cpus.

Voir la solution
Fenêtre de terminal
podman run -d --name limited --memory=256m --cpus=0.5 nginx:alpine

--memory plafonne la RAM, --cpus limite les cycles CPU. Vérifiez avec podman stats.

Quand un conteneur se comporte mal, ces méthodes de diagnostic et ces erreurs fréquentes couvrent la grande majorité des cas.

Fenêtre de terminal
# Voir tous les conteneurs, y compris arrêtés
podman ps -a
# Consulter les derniers logs
podman logs --tail 100 <conteneur>
# Voir toute la configuration d'un conteneur
podman inspect <conteneur> | less
# Lister les processus actifs dans le conteneur
podman top <conteneur>
# Suivre l'utilisation CPU/mémoire en temps réel
podman stats
# Voir les modifications du filesystem par rapport à l'image
podman diff <conteneur>
ErreurCause probableSolution
Error: permission deniedMapping d'UID rootless, SELinux, ou fichiers d'un autre utilisateurUtiliser --userns=keep-id ou ajouter :Z au volume
Network is unreachableRéseau rootless mal configuré, DNS, ou pare-feuTester avec --network=host, vérifier /etc/resolv.conf et les règles du pare-feu
Container was OOMKilledLimite mémoire dépassée, fuite mémoire, ou limite trop stricteAugmenter --memory ou optimiser l'application

À garder sous la main : les commandes Podman regroupées par usage — images, création de conteneurs, interaction et diagnostic.

SyntaxeSignificationExemple
podman pull image:tagTélécharger une imagepodman pull nginx:alpine
podman imagesLister les images localespodman images
podman rmi imageSupprimer une imagepodman rmi nginx:alpine
podman search termeRechercher sur les registrespodman search --limit 5 nginx
podman tag source cibleCréer un alias d'imagepodman tag nginx:alpine mon-nginx:v1
SyntaxeSignificationExemple
podman run imageCréer et démarrer un conteneurpodman run nginx
-dMode détaché (arrière-plan)podman run -d nginx
-itMode interactif avec TTYpodman run -it alpine sh
--rmSupprimer après l'arrêtpodman run --rm alpine echo test
--name NAMENommer le conteneurpodman run --name web nginx
-p HOST:CONTMapper un portpodman run -p 8080:80 nginx
-v SRC:DESTMonter un volumepodman run -v ./html:/usr/share/nginx/html nginx
-e VAR=valDéfinir une variable d'environnementpodman run -e MYSQL_ROOT_PASSWORD=secret mysql
SyntaxeSignificationExemple
podman psLister les conteneurs actifspodman ps
podman ps -aLister tous les conteneurspodman ps -a --filter status=exited
podman start XDémarrer un conteneurpodman start web
podman stop XArrêter proprementpodman stop web
podman rm -f XForcer la suppressionpodman rm -f web
podman exec X cmdExécuter une commandepodman exec web cat /etc/nginx/nginx.conf
podman exec -it X shOuvrir un shell interactifpodman exec -it web /bin/bash
podman logs -f XSuivre les logs en temps réelpodman logs -f --tail 50 web
podman cp SRC DESTCopier des fichierspodman cp web:/var/log/nginx ./logs
SyntaxeSignificationExemple
podman inspect XDétails complets en JSONpodman inspect web
podman top XProcessus du conteneurpodman top web
podman statsRessources en temps réelpodman stats --no-stream
podman port XPorts exposéspodman port web
podman system pruneNettoyer les ressources inutiliséespodman system prune -f
podman system dfEspace disque utilisépodman system df -v

Vous maîtrisez les commandes Podman quand vous pouvez cocher chacun de ces points sans hésiter :

  • Je sais lancer un conteneur interactif ou en arrière-plan.
  • Je sais exposer des ports et monter des volumes.
  • Je sais exécuter des commandes dans un conteneur existant.
  • Je sais consulter et suivre les logs en temps réel.
  • Je maîtrise le cycle de vie (start, stop, restart, rm).
  • Je sais inspecter un conteneur et en extraire des informations.
  • Je sais nettoyer les ressources inutilisées.
  • Je comprends le mode rootless et ses implications.

Les commandes podman run, ps, exec, logs et rm constituent le cœur de votre travail quotidien avec les conteneurs. La compatibilité avec Docker facilite la transition, et le mode rootless par défaut renforce la sécurité sans effort supplémentaire.

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.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn