Formation Docker : Maîtriser Docker Créer et administrer des conteneurs d'applications - Déployer, gérer et sécuriser les hôtes Docker

Durée 5 jours
Niveau Intermédiaire
Classe à distance
Possible

Vous pouvez suivre cette formation en direct depuis votre domicile ou votre lieu de travail. Plus d'informations sur notre solution de classe à distance...

Référence UDMC

En très peu de temps, Docker est devenu une plateforme incontournable que les développeurs et les administrateurs système utilisent pour le packaging, le déploiement et l'exécution d'applications.
Docker permet entre autres aux développeurs de créer des images, artefact immutable contenant le code d’une application ainsi que l’ensemble des dépendances nécessaires pour la lancer. Une image est instanciée en un container, processus ayant sa propre vision du système et ses propres contraintes d’utilisation des ressources. Ces images sont portables et peuvent être déployées et instanciées sur tous les environnements (intégration, QA, production).
Docker facilite notamment l'automatisation des opérations de déploiement, permet d'isoler les applications et d'optimiser l'utilisation de ressources.

À l'issue de ce cours "Maîtriser Docker", les participants disposeront des connaissances et des compétences pour maîtriser la pratique de docker et son écosystème en conditions de production tout en étant capables d’anticiper les besoins.

Plus concrètement ils seront capables de :

  • Décrire les concepts de base de la technologie
  • Créer et déboguer des conteneurs en ligne de commande
  • Gérer des images personnalisées localement et à distance
  • Savoir administrer des conteneurs en production
  • Créer et déployer des applications multi-conteneurs
  • Mettre en place une architecture clusterisée et savoir l’orchestrer avec Docker Swarm
  • Identifier les risques et challenges inhérents à Docker afin d’anticiper les bonnes solutions
  • Utiliser Docker Machine pour déployer des hôtes Docker
  • Développer et déployer des applications multi-containers avec Docker Compose
  • Détailler les primitives utilisées dans un swarm
  • Mettre en place un cluster swarm  
  • Déployer des services et stack applicatives
  • Comprendre l’importance du quorum et la réplication des logs de Raft
  • Détailler les options de stockage
  • Mettre en place une stack de supervision
  • Comprendre les éléments de sécurité apportés par Docker  
  • Détailler les éléments de l’édition entrepris

Le cours est découpé en plusieurs parties. Celles-ci pourront être réorganisées de manière différente en fonction du déroulement de la formation.

Cette formation "Maîtriser Docker" est une approche complète de Docker, composée de la formation "Docker : Créer et Administrer vos conteneurs virtuels d'applications avec Docker" (UDMA) suivie de la formation "Docker avancé : Déployer et gérer des hôtes Docker" (UDMB)

Public :

Le cours s'adresse aux administrateurs, architectes ou développeurs d'applications voulant apprendre à gérer les problématiques d'exploitation et optimiser leurs bonnes pratiques.

Prérequis :

Des connaissances de base de l’administration Linux et du langage Shell sont nécessaires pour suivre cette formation dans de bonnes conditions.

Introduction à Docker 

Les “quick wins” avec Docker
Les containers Linux
Les composants de base: namespaces et control groups
Historique de la plateforme
Les composants de l’écosystème : Docker Machine, Docker Compose, Docker Swarm...

Démonstration

Séquence de travail type d’un utilisateur de Docker pour bien comprendre les fonctionnalités apportées par Docker 

Premiers pas avec Docker 

Installer sur son environnement (Linux / MacOS / Windows)
Le docker daemon et l’architecture client/serveur
Présentation du Docker Hub, registre d’images Docker
Les commandes de base pour la gestion du cycle de vie d’un container
Supervision et debugging des containers

Travaux Pratiques :

Création de conteneurs selon différentes méthodes
Lancement de conteneurs avec passage d’arguments 

Les images Docker 

Union filesystem et Copy-On-Write
Création manuelle d’une nouvelle image
Création à partir d’un Dockerfile
Bonnes pratiques et performances (cache, écriture du dockerfile, images de base, arborescence recommandée, etc.)
Partage et utilisation des images (registre Docker)

Travaux Pratiques :

Création manuelle d’une nouvelle image
Installation d’un logiciel dans un conteneur
Création d’une nouvelle image à partir d’un fichier Dockerfile
Export / import d’image sous format fichier 

Les registres d’images 

Utilisation
Les registres Docker et autres registres de l’écosystème
Docker Hub / Docker registry / Docker Trusted Registry

Travaux Pratiques :

Déploiement et utilisation du registry officiel 

La persistance des données avec Docker 

Données non persistées par défaut
La notion de volume
Définition dans le Dockerfile ou à l'exécution
Bind-mount : montage d’un répertoire de l’hôte dans un container

Travaux Pratiques :

Étude des volumes sur des images officielles du Docker Hub
Utilisation des volumes dans des images personnalisées
Bind-mount dans un environnement de développement
Bind-mount de la socket unix du Docker daemon 

Mettre en œuvre une application multi-conteneurs 

Gérer l’interconnexion de plusieurs conteneurs avec Docker Compose
Le format de fichier défini par Docker Compose
Le binaire docker-compose
La notion de service
Communication entre les différents services
Modification du nombre d’instances d’un service

Travaux Pratiques :

Déploiement d’une application micro-services avec Docker Compose 

Intégration continue avec GitLab CI et Registry 

Considérations préliminaires
Mise en place du système
Gestion de la persistance

Travaux Pratiques :

Mise en place d’un pipeline d’intégration continue avec GitLab 

Orchestration avec Docker Swarm 

Présentation de Docker Swarm (node, service, stack, config, secret)
Les rôles manager et worker
Algorithme de consensus distribué Raft : réplication des logs et quorum
Le routing mesh
Les ports utilisés dans un swarm
Des outils de Monitoring (Netdata, Prometheus, ELK, etc.)
Montage d’un cluster Swarm
Déploiement global et atomique des services

Travaux Pratiques :

Mise en place d’un Swarm en local et sur un cloud provider
Déploiement de services
Déploiement d’une stack applicative contenant plusieurs services (load balancer, api, database)
Déploiement d'un cluster Ceph avec Rex-ray pour l’orchestration du stockage

Administration des conteneurs au quotidien 

Cycle de vie d’un conteneur
Analyse des logs
Le réseau dans Docker (standard, bridge, liens entre conteneurs, le réseau « physique », etc.)
Les volumes Docker

Travaux Pratiques :

Visite guidée d’environnement Docker en production
Automatisation du démarrage de conteneurs au boot
Affectation de ressources aux conteneurs
Partage de volumes

Docker Machine 

Présentation
Déploiement et utilisation d’hôtes Docker en local
Déploiement et utilisation d’hôtes Docker sur un cloud provider (AWS, DigitalOcean) 

Docker Compose 

Présentation
Le format de fichier Compose et son évolution
Le binaire docker-compose et son utilisation

Travaux Pratiques :

Déploiement d’applications avec Docker Compose 

Orchestration 

Présentation de Docker swarm (node, service, stack, config, secret)
Les rôles des nodes (manager, worker)
Algorithme de consensus distribué Raft : réplication des logs et quorum
Le routing mesh
Les ports utilisés dans un swarm

Travaux Pratiques :

Mise en place d’un Swarm sur un cloud provider
Déploiement d’un service
Déploiement d’une stack applicative
Utilisation des secrets 

Stockage 

La notion de volume
Utilisation et cas d’usage
File storage vs Block storage vs Object storage
Présentation de REX-Ray pour l’orchestration du stockage

Travaux Pratiques :

Mise en place d’un cluster Ceph
Exemple d’utilisation de REX-Ray 

Sécurité 

Les éléments de sécurité avec Docker
Isolation (namespaces) et limitation des ressources (cgroups)
Linux Security Modules
Capabilities / Seccomp
Scan de vulnérabilités
Content Trust
La sécurité dans un swarm 

Monitoring 

Gestion des logs
Exemple d’utilisation de Prometheus
Exemple d’utilisation de Netdata

Travaux pratiques:

Déploiement d’une stack Prometheus 

Docker Entreprise 

Présentation
Exemple de mise en place sur DigitalOcean
Démo de l’interface 

Des projets de l’écosystème Docker 

Revue de différents projets développés autour de Docker

La formation alterne théorie et travaux pratiques, dans une approche terrain. La théorie est réduite au minimum pour les parties qui n’ont pas d’application concrète dans l’exploitation au jour le jour.
Cependant, il est nécessaire de bien comprendre certains concepts pour justement mieux retenir comment les mettre en œuvre, au-delà de la simple « recette », et surtout d'évoluer avec recul dans son environnement technique au quotidien.


Formations Informatique
et Management
en ligne à ce jour

+
Stagiaires dans nos salles
de cours sur
l'année

%
De participants satisfaits
ou très satisfaits de nos
formations


Formateurs experts
validés par
PLB