picto Développement

Formation Maîtriser Docker

Référence

UDMA

Durée

3 JOURS

Tarif

1790 € HT

NIVEAU

Débutant

Cours à distance

Partiellement

Objectifs de la formation Maîtriser Docker

En très peu de temps, Docker est devenu la norme que les développeurs et les administrateurs systéme utilisent pour le packaging, le déploiement et l'exécution d'applications. Docker permet aux développeurs de créer des modèles dits images qui peuvent être utilisés pour créer des machines virtuelles légères dénommées conteneurs, capables d'exécuter les applications métier. Ces conteneurs légers peuvent alors être utilisés dans tous les environnements (intégration, QA, production).
Docker facilite énormément l'automatisation des opérations de déploiement, permet d'isoler les applications et d'optimiser l'utilisation de ressources.

A l'issue de ce cours, 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.

Vous serez capable 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 multiconteneurs
  • Mettre en place une architecture clusterisée (FS distribuée) et savoir l’orchestrer (Swarm)
  • Identifier les risques et challenges inhérents à Docker afin d’anticiper les bonnes solutions.

Pré-Requis

En très peu de temps, Docker est devenu la norme que les développeurs et les administrateurs systéme utilisent pour le packaging, le déploiement et l'exécution d'applications. Docker permet aux développeurs de créer des modèles dits images qui peuvent être utilisés pour créer des machines virtuelles légères dénommées conteneurs, capables d'exécuter les applications métier. Ces conteneurs légers peuvent alors être utilisés dans tous les environnements (intégration, QA, production).
Docker facilite énormément l'automatisation des opérations de déploiement, permet d'isoler les applications et d'optimiser l'utilisation de ressources.

A l'issue de ce cours, 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.

Vous serez capable 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 multiconteneurs
  • Mettre en place une architecture clusterisée (FS distribuée) et savoir l’orchestrer (Swarm)
  • Identifier les risques et challenges inhérents à Docker afin d’anticiper les bonnes solutions.

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.

Contenu du cours Maîtriser Docker

Introduction à Docker

Qu’est-ce qu’une démarche DevOps?
Pourquoi n’arrive-t-elle que maintenant?
Y voir clair dans le vocabulaire (Cloud, Virtualisation, DevOps, Docker, etc.)
L’application 12 facteurs - http://12factor.net
L’architecture de docker (namespaces, Cgroups, LXC, etc.)
L’écosystème Docker
L’architecture de services

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 (installation, conteneurs)

Installer sur son environnement (Linux / MacOS / Windows)
Créer une VM dans le Cloud avec Docker-Machine
Créer, configurer et démarrer un conteneur simple
Manipulations de base (recherche d’images, compte DockerHub, etc.)
Création d’un second conteneur
Prise en main du client Docker
Manipulations des conteneurs (modes de lancement, exposition des fichiers, supervision)

Travaux pratiques

Création de conteneurs selon différentes méthodes
Recherche d’image par ligne de commande
Lancement de conteneurs avec passage d’arguments

Construire des images de conteneurs personnalisés

Création manuelle d’une nouvelle image
Création d’un fichier Dockerfile (FROM, RUN, CMD, EXPOSE, etc.)
Génération de l’image
Gestion du conteneur (lancement, arrêt, relance)
Paramètres de la ligne de commandes
Gestion des fichiers
Partage et utilisation des images (registre Docker)
Bonnes pratiques et performances (cache, écriture du dockerfile, images de base, arborescence recommandée, etc.)

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
Gestion du conteneur (analyse des logs durant son cycle de vie)
Export d’image sous format fichier

Mettre en oeuvre une application multiconteneur

Gérer l’interconnexion de plusieurs conteneurs (Docker Compose)
Création d'un fichier docker-compose.yml de configuration
Déployer plusieurs conteneurs simultanément
Lier tous les conteneurs de l'application

Travaux pratiques

Création d’une infrastructure sous docker compose (GitLab)

Intégration continue avec GitLab CI et registry

Considérations préliminaires
Mise en place du système
Démarrage du registre et dépôt d’image
Gestion de la persistance

Travaux pratiques

Création d’un répertoire git sous GitLab avec une Dockerfile qui résultera automatiquement en Image

Orchestration, Monitoring, et Cluster

Explication du modèle Registration/Discovery pour les clusters
Explication du concept de base de données clés-valeurs distribués (distributed key-value store)
Quelques explications sur le format de templating en Go pour utilisation avec docker-gen
Les problématiques de Docker en production (étanchéité des services des différents conteneurs, performances, etc.)
Les outils de Monitoring (Netdata, Prometheus, ELK, etc.)
Montage d’un cluster Swarm
Déploiement global et atomique des services
Orchestration d'un cluster de serveurs Docker avec Swarm

Travaux pratiques

Surveillance des performances des conteneurs Docker avec Netdata (observation des transactions critiques)
Mise en place de Swarm (génération des certificats de sécurité, configuration iptables, configuration des nœuds, configuration de la machine maître, utilisation de Swarm pour le provisionnement des containers dans le cluster)
Mise en place de Swarm (stack complet avec un load-balancer en front (HAProxy) et 10 process node.js, ce load balancer sera capable de scaler de 1 process nodejs à l'infini)
Déploiement d'un cluster Ceph (Installation de volplugin, outil de management de volume Ceph pour Docker, usage de Ceph comme backend pour vos données dans les containeurs)

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