Docker - Initiation et approfondissement
Formation créée le 22/03/2024.
Version du programme : 1
Programme de la formation
Objectifs de formation : Fournir une compréhension complète de Docker, de la création de conteneurs à la gestion des services dans un environnement Docker Swarm ou Kubernetes, en passant par la sécurisation et l'optimisation des images Docker.
Objectifs de la formation
- Comprendre l'architecture et les composants clés de Docker
- Savoir créer, gérer et déployer des conteneurs Docker
- Maîtriser la création et la gestion des images Docker
- Apprendre à configurer et gérer des services avec Docker Swarm
- Connaître les bonnes pratiques pour sécuriser et optimiser les conteneurs Docker
Profil des bénéficiaires
Pour qui
- Développeurs
- DevOps
- Architectes logiciels
- Administrateurs systèmes
Prérequis
- Connaissances de base en administration système
- Compréhension élémentaire des principes de développement logiciel
Contenu de la formation
-
Docker Engine et architecture (3 heures)
- Les fondamentaux de Docker : fonctionnement et objectifs
- Exploration en détail de l'architecture de Docker, y compris le Docker daemon, le REST API, et le CLI
- Travaux pratiques: Installation de Docker et préparation à l’usage
-
Conteneurisation d'une application simple (3 heures)
- Définition de conteneuriser et cycle de vie
- Introduction aux conteneurs: Isolation, images, et couches d'images
- Interconnexion des Conteneurs: Concepts de Docker networking, ponts réseau (docker network), et leur configuration
- Logs et Monitoring: Extraction des logs (docker logs) et utilisation de Docker stats pour monitorer l'utilisation des ressources
- Travaux pratiques: Dockerisation d'une application Python/Flask simple, construction de l'image et exécution du conteneur
-
Création et gestion des images Docker (4 heures)
- Dockerfile: Syntaxe, instructions (FROM, RUN, CMD, EXPOSE, ENV, COPY, ADD)
- Construction d'Images: docker build, gestion du cache, tagging (docker tag)
- Docker Hub et Registries Privés: Push/pull d'images, gestion des versions
- Travaux pratiques: Écriture d'un Dockerfile pour une application Node.js, construction de l'image, et push sur Docker Hub
-
Dockerfile avancé (3 heures)
- Optimisation des images: Réduction de la taille des images, multi-stage builds (FROM ... AS), minimisation des couches
- Gestion des secrets et configurations: Utilisation de variables d'environnement, docker secret
- Health Checks: Configuration des vérifications d'état (HEALTHCHECK)
- Travaux Pratiques : Refonte d'un Dockerfile existant pour optimiser la taille de l'image et intégrer des health checks
-
Réseau dans Docker (4 heures)
- Types de réseau Docker: Bridge, Host, Overlay, Macvlan, et leurs cas d'usage
- DNS et découverte de service: Compréhension de la résolution de noms dans Docker
- Sécurisation du réseau: Meilleures pratiques pour isoler les conteneurs.
- Travaux pratiques : Configuration d'un réseau overlay dans un environnement Docker Swarm pour permettre la communication entre services sur différents hôtes
-
Stockage et volumes (3 heures)
- Persistance des données: Volumes (docker volume), bind mounts, tmpfs mounts, et leurs différences
- Gestion des données dans les clusters: Solutions pour la persistance des données dans Docker Swarm et Kubernetes
- Travaux pratiques : Mise en œuvre de volumes Docker pour stocker des données persistantes pour une base de données PostgreSQL dans un conteneur
-
Introduction à Docker Compose (4 heures)
- YAML et configuration de services: Structure du fichier docker-compose.yml, définition de services, réseaux, et volumes
- Gestion du cycle de vie d'application: Commandes docker-compose up, down, logs
- Travaux pratiques : Utilisation de Docker Compose pour orchestrer une application microservices comprenant une API REST, une base de données, et un frontal web
-
Orchestration avec Docker Swarm (3 heures)
- Initiation à Docker Swarm: Création d'un cluster Swarm, rôles des nœuds (manager, worker)
- Services Swarm et réplicas: Déploiement et mise à l'échelle de services dans un Swarm, stratégies de mise à jour
- Routage de Réseau et Load Balancing: Comprendre le routage mesh et les services ingresses
- Travaux pratiques : Configuration d'un cluster Docker Swarm pour déployer et gérer un service web à haute disponibilité
-
Sécurisation des Conteneurs Docker (3 heures)
- Pratiques de sécurité pour les images et conteneurs: Minimisation de l'empreinte des conteneurs, gestion sécurisée des secrets et des accès, analyse de vulnérabilités avec des outils comme Clair
- Sécurité au niveau du réseau: Isolation du réseau, filtrage avec iptables, et meilleures pratiques pour sécuriser la communication entre conteneurs
- Gestion des utilisateurs et contrôle d'accès: Limitation des privilèges des conteneurs, utilisation de user namespaces pour séparer les privilèges des processus conteneurisés
- Travaux pratiques : Sécurisation d'une application Docker en appliquant les principes de moindre privilège, configuration des règles de réseau, et intégration d'un scan de vulnérabilités dans le processus de build.
-
Monitoring et Logging (3 heures)
- Surveillance de l'infrastructure Docker: Utilisation de Docker stats et de solutions de monitoring externes comme Prometheus et Grafana pour collecter et visualiser les métriques des conteneurs et du système
- Gestion des Logs: Configurations de logging pour Docker, centralisation des logs avec des outils comme ELK (Elasticsearch, Logstash, Kibana) ou Loki
- Travaux pratiques : Mise en place d'une pile de monitoring et de logging pour un cluster Docker Swarm, incluant la configuration de Prometheus pour collecter les métriques et de Grafana pour la visualisation
-
Bonnes Pratiques (2 heures)
- Récapitulatif des meilleures pratiques: Discussion sur les meilleures pratiques en termes de développement, de build, de déploiement, et de maintenance des applications conteneurisées
- Pour aller plus loin : Présentation des ressources disponibles pour continuer à apprendre et à se perfectionner sur Docker, y compris la documentation officielle, les forums, et les groupes d'utilisateurs.
Équipe pédagogique
Professionnel expert dans le DevOps
Suivi de l'exécution et évaluation des résultats
- Feuilles de présence
- Mises en situation
- Formulaires d'évaluation de la formation
- Certificat de réalisation de l’action de formation
- Émargement numérique
Ressources techniques et pédagogiques
- Documents supports de formation projetés
- Exposés théoriques
- Etude de cas concrets
- Mise à disposition en ligne de documents supports à la suite de la formation
- Espace intranet de formation
Qualité et satisfaction
Taux de satisfaction des stagiaires
Progression des compétences visées
Taux d'abandon
Taux de retour des enquêtes
Taux d'interruption en cours de prestation