PLB CONSULTANT : 02. Docker, créer et administrer des conteneurs virtuels d'applications
Organisme
92300 LEVALLOIS PERRETVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
Travaux pratiques. QCM en cours et en fin de formation. Auto-évaluation en début et en fin de formation.
Prix
Public
Administrateurs, Chefs de projet, Développeurs d'applications, toute personne souhaitant mettre en œuvre Docker pour déployer ses applications…
Pré-requis
Avoir les connaissances de base de l’environnement Unix/Linux.
Objectifs pédagogiques
- Comprendre le positionnement de Docker et des conteneurs
- Savoir mettre en œuvre la solution ainsi que les produits de l'écosystème pour déployer rapidement des applications à l'aide de conteneurs
- Manipuler l'interface en ligne de commande de Docker pour créer des conteneurs
- Administrer des conteneurs
- Identifier les risques et challenges inhérents à Docker afin d’anticiper les bonnes solutions
Programme détaillé
Jour 1
Présentation de Docker
Les différents niveaux de virtualisation (système, applicatif)
Avantages de la virtualisation applicative
DevOps, des nouveaux outils et de nouvelles habitudes de travail
Comprendre l’Infrastructure As Code
Vocabulaire autour du paysage informatique (Web Services, Micro-services, SOA, CI/CD, etc.)
La place de Docker et des conteneurs dans ce paysage
Travaux pratiques
Séquence de travail type d’un utilisateur de Docker pour bien comprendre les fonctionnalités apportées par Docker et en quoi il change les habitudes techniques et organisationnelles des équipes.
Architecture de Docker
Client et moteur Docker
Les composants de base : images, registry, container
Comprendre le daemon Docker et l’architecture client/serveur, l’API Docker
Les éditions de Docker
Implémentation sous Linux et Windows
La gestion des images Docker
Kernel, images et conteneurs
Ecosystème Docker (Docker Hub, Docker registry, Dockerfile, Docker Compose)
Docker Desktop
Docker et le Cloud
Travaux pratiques
Installation de Docker Community Edition
Initiation aux conteneurs
Présentation d'un conteneur
Création d'une image
Exploitation applicative standard
Exploitation applicative du stockage
Images et conteneurs Docker
Liens entre image et conteneur
Qu’est-ce qu’un registry de conteneurs ?
L’exemple de Docker Hub
La registry privée
Nomenclature d’appels de conteneurs
Savoir télécharger (pull) des images, comprendre le nommage des images Docker
Créer un compte sur le Hub Docker et pousser (push) des images via la CLI Docker
Comprendre l’historique des images
Administrer les images en local, nommage, suppression, le cache
Principes d’instanciation d’un conteneur
Créer une image à partir d’un conteneur
Gestion de la console au quotidien
Travaux pratiques
Navigation dans le Docker Hub
Administrer ses images, pull, tag, push, history...
Créer un compte sur le registre
Envoyer des images dans le registre Docker (Hub Docker)
Créer un registre privé
Administrer ses conteneurs avec les options du run
Se connecter sur les conteneurs
Installation d’applications Web dans un conteneur et création d’images à partir de ce dernier
Docker et le réseau
Comment exposer ses images vers l’extérieur ?
Comprendre le réseau Docker
La notion de publication de port
Publier des ports avec publish
Créer des réseaux Docker, dchp, dns
Communications inter conteneurs
Travaux pratiques
Tests de l’exposition de nos images selon différents modes de configuration du réseau (bridge, hôte, join, link)
Les volumes de données avec Docker
Le problème de la persistance dans les conteneurs
Gestion du stockage
Bien maîtriser les volumes Docker, bind, files, volumes distants
Identification des volumes orphelins
Travaux pratiques
Créer des volumes Docker
Associer des systèmes de fichiers avec vos conteneurs (local et distant)
Jour 2
Dockerfile
Comprendre la construction d’image avec le Dockerfile
Les instructions du Dockerfile :FROM, RUN CMD, ENTRYPOINT
Les bonnes pratiques (nettoyage, lancement des services, sécurité…)
Déployer son propre registre Docker
Présentation d’Harbor
Travaux pratiques
Création d'une image à l'aide de Dockerfile
Optimisation de la création des images
Créer une image MongoDB à l’aide de la description GitHub
Création d’une image LAMP
Construction, déploiement d’un registre Docker via Dockerfile
Identification et push d’images personnalisé sur le registre
Application multi-conteneurs (docker-compose)
Comprendre l’orchestration des Micro services avec docker-compose
Le format yaml de fichier défini par docker-compose
La commande docker-compose
Mon premier service
Le réseau avec docker-compose
Les volumes de données avec docker-compose
Les dépendances entre services
Mise à jour des services
Travaux pratiques
Déploiement d’une application Web, PHP, SQL, hautement disponible avec HAProxy, Apache...
Déploiement d’une stack de journalisation avec la suite ELK (Elasticsearch, Logstash, Kibana)
Configurer la journalisation avec Docker-compose
Fonctions avancées de docker-compose
Construire des images avec docker-compose, les contextes
Rendre dynamiques ses fichiers compose avec les variables et le fichier .env
Les sondes de vitalité et de disponibilité
Comprendre les labels
Configuration avancée des volumes
Le Rollback et update des services
Travaux pratiques
Créer un environnement complexe avec le fichier. env et les variables
Créer des sondes vitalité health check
Créer des labels pour échanger avec le démon Docker et d’autres applications Docker
Gérer ses mises à jour
Jour 3
Sécurité
Éléments à risque : noyau, conteneurs, Docker daemon...
Quelques bonnes pratiques d’administration
Scan de vulnérabilité des images
Les bonnes pratiques dans le Dockerfile
La capabilities Linux/Syscall
Travaux pratiques
Sécurisation des images et tests d’accès
Exploitation de docker au quotidien
Les plugins Docker
Administration des plugins
Principe de la copie sur écriture (CoW)
Intégration à Docker de la copie sur écriture
Les pilotes de stockage Docker (AUFS, OverlayFS, DeviceMapper…)
Configuration du daemon Docker
Démarrage automatique des services
Gestion des logs
Restriction sur les ressources
Protection du contenu d’un conteneur
Bonnes pratiques de sécurité
Travaux Pratiques
Implémentation d’un plugin de stockage
Redémarrage automatique
Déploiement d’un frontal web d’administration
Quiz autour de l’interprétation de dysfonctionnements rencontrés dans les logs
Introduction à l’intégration continue avec GitLab/Jenkins
Retour sur l’automatisation de sa chaine de production
Construire et pousser des images Docker avec Jenkins et GitLab
Le Dockerfile et Jenkinsfile
Travaux pratiques
Mise en place d’un pipeline d’intégration continue avec GitLab et Jenkins
Introduction à l’orchestration de conteneurs
Limites de Docker seul et apport d’un orchestrateur (haute disponibilité, scalabilité…)
Comprendre l’architecture d’un orchestrateur de conteneurs
Dialogue entre les noeuds d’un cluster
Les exemples de Swarm et Kubernetes
Le vocabulaire de Kubernetes (pods, service…)
Comprendre les applications stateless et statefull
Travaux Pratiques
Démonstration du formateur pour comprendre comment s’exécutent les images Docker dans un contexte d’orchestration et la plus-value concrète d’un outil comme Kubernetes pour les développeurs (déploiement d’une application LAMP à haute disponibilité par exemple)