Objectifs de la formation
- Comprendre l'architecture de Podman et ses différences avec Docker.
- Maîtriser les commandes Podman pour la gestion des images, conteneurs, pods et volumes.
- Savoir construire des images de conteneurs efficaces et sécurisées.
- Déployer et gérer des conteneurs Podman en environnement local et sur AWS.
- Comprendre et utiliser la notion de Pods avec Podman
- Appliquer les meilleures pratiques pour une utilisation opérationnelle de Podman.
Programme de la formation
Introduction
- Rappel des concepts fondamentaux de la conteneurisation.
- Qu'est-ce que Podman ? Histoire et philosophie.
- Architecture sans daemon : avantages (sécurité, simplicité, intégration).
- Comparaison entre Podman et Docker : quelles différences ?
- Qu'est-ce qui distingue Podman en termes de sécurité et de gestion ?
Travaux pratiques : Installation et configuration de Podman sous Linux (apt, dnf, pacman), Windows et macOS (présentation de Podman machine et de Podman Desktop). Configuration de base : containers.conf, registries.conf, storage.conf, Configuration de l'environnement Rootless (utilisateur non-root).
Gestion des conteneurs avec Podman
- Création et gestion de conteneurs simples avec Podman.
- Comment utiliser les commandes de Podman pour lancer, arrêter, et supprimer des conteneurs ((podman stop, podman start, podman rm).
- Exploration des logs et gestion des processus dans les conteneurs.
- Sauvegarde et restauration de conteneurs avec Podman.
Travaux pratiques : création d'un conteneur simple. Les participants lanceront, arrêteront et supprimeront des conteneurs, tout en explorant les logs générés
Gestion des images et des registres
- Recherche et téléchargement d'images (podman search, podman pull).
- Listing et inspection des images (podman images, podman inspect).
- Suppression d'images (podman rmi).
- Construction d'images avec Podman et Buildah : Introduction au Dockerfile/Containerfile.
- Meilleures pratiques pour la construction d'images (multi-stage builds, optimisations).
Travaux pratiques : Création d'un Dockerfile simple, construction d'une image personnalisée.
Gestion des Volumes
- Types de volumes : bind mounts, named volumes.
- Création et suppression de volumes nommés (podman volume create, podman volume rm).
- Partage de données entre conteneurs.
- Sauvegarde et restauration de données de volumes.
Travaux pratiques : Mise en place d'une base de données dans un conteneur avec persistance des données via un volume.
Gestion des Réseaux
- Types de réseaux Podman : bridge par défaut, host, none.
- Création de réseaux personnalisés (podman network create).
- Attachement de conteneurs à des réseaux spécifiques.
- DNS et découverte de services entre conteneurs sur le même réseau.
Travaux pratiques : Déployer une application multi-conteneur sur un réseau Podman personnalisé.
Les Pods
- Qu'est-ce qu'un Pod dans Podman et pourquoi les utiliser ?
- Création et gestion de Pods pour organiser les conteneurs.
- Sécurisation des communications entre conteneurs dans un Pod.
Travaux pratiques : Créer un Pod avec deux conteneurs partageant le même réseau et volume.
Les plugins
- Qu'est-ce qu'un plugin Podman
- Les différents types de plugins
- Network Plugins (CNI)
- Volume Plugins (CSI)
- Autres plugins
Travaux pratiques : installer et configurer des plugins CNI/CSI.
Intégration avec Systemd
- Génération de services Systemd à partir de conteneurs et de Pods
- Gestion des services Podman avec Systemd (démarrage automatique, supervision…)
- Bonnes pratiques pour les déploiements persistants.
Travaux pratiques : Automatiser le démarrage d'un Pod via un service Systemd.
Sécurité avec Podman (vue d’ensemble)
- Conteneurs Rootless : Approfondissement des mécanismes de sécurité.
- SELinux et AppArmor : Rôles et configuration avec Podman.
- Limitation des ressources (CPU, mémoire) : podman run --cpus, -memory.
- Principes de moindre privilège pour les conteneurs.
- Scanning de vulnérabilités des images (outils externes).
Gestion des Registres de Conteneurs
- Authentification aux registres privés (podman login).
- Utilisation des registres distants : push et pull d'images.
- Comment sécuriser les connexions aux registres de conteneurs ?
- Tagging et poussée d'images vers des registres (podman tag, podman push).
- Présentation des registres AWS : ECR (Elastic Container Registry).
Travaux pratiques : Authentification à ECR, tagger et pousser une image Podman vers ECR.
Déploiement de Conteneurs Podman sur AWS
- Stratégies de déploiement
- AWS EC2 avec Podman : Exécution directe de Podman sur une instance EC2.
- Utilisation d'images Podman avec ECS (Elastic Container Service).
- Préparation de l'environnement EC2 (AMI, User Data, Security Groups).
- Automatisation du déploiement avec des scripts Bash ou des outils IaC (Terraform, CloudFormation - concepts).
Travaux pratiques : Lancer une instance EC2 Linux, installer Podman, puis tirer et exécuter une image depuis ECR sur cette instance.