Course Overview
Docker est une technologie de virtualisation qui permet de créer, déployer et démarrer des applications facilement en utilisant des conteneurs de logiciels ou services.
En effet une application a besoin de multiples logiciels pour fonctionner et chacun de ces logiciels dépendent de l’environnement de la machine sur laquelle ils sont installés.
Les conteneurs permettent aux développeurs de réunir une application et toutes ses dépendances dans un seul package. Pour ce faire, chaque conteneur peut contenir plusieurs conteneurs. Enfin les services fournis par chaque conteneurs sont accessibles via le réseau.
Pour atteindre ce résultat, le pré-requis de base est de fonctionner en mode Devops : donner davantage d’autonomie aux développeurs ne veut pas dire qu’ils peuvent faire ce qu’ils veulent sans se coordonner avec les Ops (Admin Systèmes et Réseaux).
- Les conteneurs doivent être co-construits par les Dev et les Ops (Admin Systèmes et Réseaux) :
- la configuration de base de données devra bien être validée et optimisée par les Ops, une erreur fréquente est que les Dev déploient une configuration par défaut de la BDD et que les paramètres ne soient pas adaptés à la situation de production,
- la gestion des espaces partagés de données (fichier ou BDDs) doit être bien conçue, en production, à ce stade on va devoir en effet repasser sur le Docker Compose pour modifier les déclarations des volumes,
- les Ops doivent valider que les conteneurs embarquent bien tous les éléments de configuration qui leur permettront de se déployer sur un serveur standard de production,
- La sécurité des accès doit être intégrée afin de restreindre ceux-ci au strict nécessaire en production,
- L’intégration du load-balancing doit être bien prise en compte, les conteneurs doivent tendre au maximum vers du stateless.
- L’architecture logicielle doit être conçue et validée avec les Ops pour s’assurer que celle-ci :
- sera bien adaptée aux conditions de production (volumétrie, temps de réponse, disponibilité)
- pourra être déployée simplement sur plusieurs serveurs,
- et sera bien scalable pour accompagner une montée en charge,
- Les Ops doivent se former pour maîtriser les conteneurs afin de les maîtriser en production :
- ils doivent comprendre un Dockerfile et être en mesure d’identifier comme d’analyser les modifications apportées entre deux versions d’un conteneur,
- ils doivent maîtriser le Docker Compose et le valider,
- ils doivent comprendre les interconnexions entre conteneurs,
- Le process de déploiement doit être défini et mis à jour afin de minimiser les interventions manuelles et les risques d’erreur humaine, et intégrer la méthode de retour arrière, pour cela il est important de gérer son repository d’images Docker,
- Le monitoring doit être pris en compte dans cette phase de conception, et superviser les applicatifs ainsi que les serveurs sur lesquels ils sont déployés, on ne monitore pas un conteneur en tant que tel, mais bien son applicatif,
- Le mode de sauvegarde/restauration doit aussi être prévu et testé,
C’est ce mode de co-construction en Devops qui doit s’imposer dès le début de la démarche et assurer un fonctionnement homogène de l’application tout au long de la chaîne de déploiement.
Cette formation va permettre aux Ops (Sysadmin et Réseaux) d’apprendre docker afin de se synchroniser avec les développeurs pour construire des applications.
Prérequis
- Avoir des notion sur linux (Obligatoire)
- Avoir des notions en Systèmes et Réseaux
- Avoir des bases en virtualisation
Fonctionnalités
- Conteneurisation
- Virtualisation
- Comprendre comment fonctionne un conteneur Docker
- Connaître toutes les commandes du Docker CLI
- Comprendre comment fonctionne une image et comment créer un Dockerfile
- Utiliser les volumes et les réseaux Docker
- Utiliser Docker Hub pour télécharger et distribuer des images
- Créer un Registry privé pour distribuer vos propres images
Public ciblé
- Tous personnes souhaitant apprendre docker