Docker Prise en main et mise en pratique sur une architecture micro-services



Documents pareils
Stéphane DERACO, DSI CNRS l Argos Devops : de l hyperviseur aux conteneurs l 11/12/2014 DOCKER

DOCKER MEETUP. Christophe Labouisse

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

tech days AMBIENT INTELLIGENCE

Hyper-V et SC Virtual Machine Manager Technologie de virtualisation sous Windows Server 2008 R2 [2ième édition]

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

Bonjour. Yohan PARENT, Cyprien FORTINA, Maxime LEMAUX, Hyacinthe CARTIAUX

Exercice sur les Dockers

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

A Les différentes générations VMware

Tout d abord les pré-requis : Au menu un certain nombre de KB

Hyper-V (version 3) et System Center Virtual Machine Manager Technologie de virtualisation sous Windows Server 2012 R2

Vers une fédération de Cloud Académique dans France Grilles J. Pansanel pour le groupe FG-Cloud (M. Airaj, C. Cavet, V. Hamar, M. Jouvin, C.

"Modélisation interactive d'un genou humain"

EXALOGIC ELASTIC CLOUD MANAGEMENT

Getting Started. 10 étapes pour bien démarrer. Avant de démarrer. Première connexion PCC

LXC : Une technologie de contextualisation ultra light intégrée au kernel Linux

VMware vsphere 5 Préparation à la certification VMware Certified Professional 5 Data Center Virtualization (VCP5-DCV) - Examen VCP510

D r o i t s D r o i t s Q u i z z : i n t e r n e t t e x t e

SQL Server 2012 Implémentation d'une solution de Business Intelligence (Sql Server, Analysis Services...)

Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2

Table des matières 1. Introduction. 1. Avant-propos Remerciements Chapitre 1 Virtualisation de serveurs

IDEC. Windows Server. Installation, configuration, gestion et dépannage

L'automatisation open source pour SI complexes

Veille Technologique Docker

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Tableau comparatif des offres Visual Studio

Les termes du cloud CUMULO NUMBIO 2015 O. COLLIN

Exchange Server 2010 Exploitation d'une plateforme de messagerie

Présentation. La société VFCS, offre un éventail très large de services couvrant vos besoins liés aux technologies actuelles de l'informatique.

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

DSI - Pôle Infrastructures

Sauvegardes sous Mac OS X

Filière métier : Administrateur Virtualisation

Programme formation pfsense Mars 2011 Cript Bretagne

Du Datacenter au Cloud Quels challenges? Quelles solutions? Christophe Dubos Architecte Microsoft

La virtualisation de serveurs avec VMWare Infrastructure - Retour d expérience. Rodérick Petetin CRI INSA Rennes

A Libre Ouvert. Médiathèque Jacques Ellul. le

RECOVERY MANAGER G. Mopolo-Moké prof. MBDS UNSA 2005/ 2006


Fiche Technique Windows Azure

Le stockage unifié pour réduire les coûts et augmenter l'agilité

CAHIER DES CHARGES D'IMPLANTATION

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

DOSSIER SOLUTION CA ERwin Modeling. Comment gérer la complexité des données et améliorer l agilité métier?

CONFIGURER ET DÉPLOYER UN CLOUD PRIVÉ AVEC SYSTEM CENTER 2012

Premier Accelerate Packages: Azure Fast Start

RÉSUMÉ DESCRIPTIF DE LA CERTIFICATION (FICHE RÉPERTOIRE)

Table des matières. Chapitre 1 Les architectures TSE en entreprise

4D v11 SQL BREAKING THE LIMITS * Les nouveautés

Accélérez vos tests et développements avec le Cloud, découvrez SoftLayer, la dernière acquisition Cloud d'ibm

Retour d expérience de la plateforme de virtualisation sous Proxmox VE à l IPHC journée SysAdmin du 04/12/2014 à l INRA de Toulouse

Windows Server Chapitre 1: Découvrir Windows Server 2008

Le tout à l usage dans un IaaS public «Comment une plateforme industrielle permet de déployer des usages applicatifs en accord avec cette promesse»

DOSSIER SOLUTION : CA ARCserve r16. Recours au Cloud pour la continuité d'activité et la reprise après sinistre

Chapitre 1 Windows Server

Cloud Computing. Groupe : Vincent, Mohammed, Yannick, Allan Tuteur : Mr. NUSSBAUM Lucas Année : 2009/2010

Mise en place d un cluster NLB (v1.12)

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Catalogue Formation «Vanilla»

Plan de cette matinée

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

TP Déploiement de réseaux IP sous Linux et MS Windows sur une infrastructure virtualisée

Tests de SlipStream sur les plateformes et : vers la. Vers la fédération du Cloud computing

+ = OpenStack Presentation. Raphaël Ferreira - enovance. Credits : Thanks to the OpenStack Guys 1

GESTION D INFRASTRUCTURE AVEC PUPPET

Windows Server 2012 R2 Administration avancée - 2 Tomes

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Société TPA S.A.S. Servie Informatique TPA Metz Nord. 85, avenue de Thionville Woippy. L entreprise.

La GEIDE. Dans une solution GEIDE, il est possible d'associer au sein même d'un dossier:

OFFRES DE SERVICES SDS CONSULTING

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

INSTALLATION ET CONFIGURATION DE HYPER V3

Introduction au Cloud Computing

Plan de cet après-midi

Gestion des Appliances. M. AIRAJ Ecole Informatique IN2P

CA ARCserve r16 devance Veeam Backup and Replication 6.5 dans le domaine de la protection virtuelle

Guillaume PHILIPPON. Mise en place d un cloud privé et publique

Solutions Dell Networking pour le Big Data. Philippe MARTIN Networking Sales Specialist - p_martin@dell.com

Présentation Utilisation. VirtualBox. Firas Kraïem. 22 février 2014

WSM la solution complète de provisionnement de bureaux virtuels

IaaS à la sauce Portails Focus sur. Pierre Aubert Orange Portails OF/DMGP/Portails/DOP 1 er Juillet 2013

Utilisation des ressources informatiques de l N7 à distance

L offre de formation 2014 INSET de Dunkerque

AGARIK, GROUPE ATOS PRÉSENTATION DE LA SOCIÉTÉ. Agarik, hébergeur d un monde intelligent

Section I: Le Contexte du DATA CENTER Pourquoi l AGILITE est Nécessaire dans le DataCenter

Qu est ce qu une offre de Cloud?

Virtualisation du poste de travail. Denis CASANOVA UFR Sciences & Technologies CUME - 29 Mars 2012

Chapitre 2 : Abstraction et Virtualisation

Mise en œuvre d un poste virtuel

Vers une IT as a service

Pourquoi choisir ESET Business Solutions?

Chapitre 2. Cluster de calcul (Torque / Maui) Grid and Cloud Computing

Transcription:

Introduction à Docker 1. Docker ou la virtualisation légère 13 1.1 L'approche par virtualisation 13 1.2 Docker pour optimiser l'usage des ressources 15 1.3 Positionnement de Docker par rapport à la virtualisation 17 2. Principe des conteneurs 19 2.1 Principe des conteneurs industriels 20 2.2 Docker et l'approche normalisée 21 3. Les fondements de Docker 22 3.1 Namespaces 22 3.2 Cgroups 24 3.3 LXC 24 3.4 Libcontainer 25 3.5 Système de fichiers en couches 26 3.5.1 Principe d'isolation des fichiers 26 3.5.2 Approche par virtualisation 27 3.5.3 Utilité des systèmes de fichiers en couches 28 3.5.4 Gestion des modifications de fichiers 30 3.5.5 Dernière couche en écriture 32 3.5.6 Technologies utilisées 33 4. Les plus de Docker 33 5. L écosystème Docker 34 6. Architectures de services 36 6.1 Historique des architectures de services 36 6.1.1 Principes 36 6.1.2 Approche EAI 37 6.1.3 Approche SOA 37 1/11

6.1.4 Microservices 37 6.1.5 Lien à l'urbanisation des SI 38 6.2 Architecture de microservices 38 6.2.1 Principe 38 6.2.2 Avantages 39 6.2.3 Inconvénients 42 6.3 Apport de Docker 43 6.4 Fil conducteur 44 Premiers pas 1. Installation de Docker 45 1.1 Utiliser des machines préconfigurées 46 1.2 Installation de Docker sur Linux 51 1.2.1 Prérequis 51 1.2.2 Installation par Aptitude 51 1.2.3 Installation par script 51 1.2.4 Installation depuis les binaires 52 1.3 Installation de Docker sous Windows ou Mac OS X 53 1.3.1 Un paradoxe 53 1.3.2 Boot2Docker 53 1.3.3 Docker et Hyper-V 58 1.3.4 Machine virtuelle 63 1.4 Utilisation de Docker avec Vagrant 63 1.4.1 Configuration 64 1.4.2 Mode de fonctionnement sous Linux 66 1.4.3 Mode de fonctionnement sous Windows 66 1.4.4 Pour aller plus loin avec Vagrant 67 2. Hello World, Docker 68 2.1 Démarrage d'un conteneur simple 68 2.2 Que s'est-il passé? 69 2.2.1 Récupération de l'image 69 2.2.2 Anatomie de l'image obtenue 70 2/11

2.2.3 Lancement du processus 73 2.2.4 Arrêt du conteneur 75 3. Manipulations de base 77 3.1 Trouver une image Docker préexistante 77 3.1.1 Le registre Docker 77 3.1.2 Images officielles 79 3.1.3 Autres images 80 3.1.4 Recherche par la ligne de commande 82 3.1.5 Précautions sur une image non officielle 83 3.2 Gestion du compte Docker Hub et dépôts privés 88 3.2.1 Création d'un compte 89 3.2.2 Association à un compte GitHub 89 3.2.3 Connexion au compte en ligne de commande 95 4. Un second conteneur 96 4.1 Récupération de l'image 96 4.2 Explication des tags 97 4.3 Premier lancement 99 4.4 Lancement en mode interactif 102 4.5 Persistance des modifications sous forme d'une image 105 4.6 Prise en main du client Docker 107 4.6.1 Ménage dans les conteneurs 108 4.6.2 Ménage dans les images 108 4.6.3 Suppression automatique à la sortie 109 4.6.4 Affectation d'un nom de conteneur 109 4.6.5 Modification du point d'entrée par défaut 110 4.6.6 Envoi de variables d'environnement 111 4.6.7 Modification du hostname 113 4.7 Manipulation des conteneurs 114 4.7.1 Lancement en mode bloquant 114 4.7.2 Lancement en arrière-plan 116 4.7.3 Gestion correcte du cycle de vie des conteneurs 121 4.7.4 Exposition de fichiers 124 4.7.5 Supervision des conteneurs 126 3/11

5. Retours sur les premiers pas 127 Création de vos propres images 1. Création manuelle d'une nouvelle image 129 1.1 Installation d'un logiciel dans un conteneur 129 1.2 Persistance de l'image pour une utilisation future 132 1.3 Utilisation de l'image créée 133 1.4 Connexion depuis la machine hôte 135 1.5 Suite des opérations 137 2. Utilisation d un Dockerfile 138 2.1 Intérêt des fichiers Dockerfile 138 2.2 Utilisation d'un fichier Dockerfile 140 2.3 Résultats de l'utilisation d'un Dockerfile complet 143 2.4 Anatomie d'un fichier Dockerfile 144 2.4.1 FROM 144 2.4.2 RUN 144 2.4.3 ENV 146 2.4.4 VOLUME 147 2.4.5 COPY 150 2.4.6 ENTRYPOINT 151 2.4.7 EXPOSE 154 2.4.8 CMD 154 2.5 Notre premier Dockerfile 155 2.5.1 Création et test du script 155 2.5.2 Création du Dockerfile 156 2.5.3 Génération de l'image 158 2.5.4 Lancement du conteneur 159 2.5.5 Arrêt et relance du conteneur 160 2.5.6 Gestion des paramètres 162 2.5.7 Reconstruction de l'image et cache 163 2.6 Commandes additionnelles 165 4/11

2.6.1 Gestion des fichiers 165 2.6.2 Notion de contexte 166 2.6.3 Retours sur l'affectation du processus à démarrer 167 2.6.4 Remarque sur le format ligne de commande ou exécution 169 2.6.5 Commandes diverses 172 3. Partage et réutilisation simple des images 174 3.1 Envoi sur votre compte Docker Hub 174 3.2 Export et import sous forme de fichiers 177 4. Bonnes pratiques 178 4.1 Principe du cache sur les images 178 4.2 Principe du cache à la compilation 184 4.2.1 Retour sur les images intermédiaires 184 4.2.2 Anatomie d'une compilation d'image 186 4.2.3 Analyse d'une modification du Dockerfile 188 4.2.4 Gestion correcte des étiquettes 190 4.2.5 Invalidation du cache par modification de l'image de base 193 4.2.6 Invalidation du cache par modification du contexte 199 4.3 Conséquences sur l'écriture des Dockerfile 201 4.3.1 Le problème sur les opérations non idempotentes 201 4.3.2 Contournement du problème de cache 204 4.3.3 Effets bénéfiques sur le nombre et la taille des images 207 4.4 Conséquences sur le choix des images de base 209 4.4.1 La bonne image de base 209 4.4.2 Votre propre image de base 211 4.5 Arborescence recommandée 213 4.5.1 Avantages d'une arborescence type 213 4.5.2 Intégration des fichiers 215 4.5.3 Limitation du contexte 217 4.6 La question du processus unique 218 4.6.1 Principe général 218 4.6.2 Exception au principe général avec Supervisor 218 4.6.3 Critique 220 4.6.4 Approche intermédiaire 220 5/11

5. Pour aller plus loin 221 Installation d'un registre privé 1. Premiers pas pour un registre privé 223 1.1 Avertissement sur l'ancien registre 223 1.2 Image Docker en local 224 1.3 Pointer sur un registre donné 226 1.4 Registre sur le réseau local 227 1.4.1 Scénario et préparation des machines 228 1.4.2 Démarrage du registre 230 1.4.3 Dépôt de l'image depuis une autre machine 231 1.4.4 Utilisation de l'image depuis une troisième machine 233 1.4.5 Suppression de l'image sur la machine source 236 1.4.6 En cas de problème avec boot2docker 238 2. Un registre plus professionnel 239 2.1 Gestion de la persistance 239 2.1.1 Gestion locale par volume 239 2.1.2 Remarque sur SELinux 241 2.1.3 Un stockage plus sécurisé 242 2.1.4 Remarque sur la protection de la clé 249 2.2 Sécurisation du registre 251 2.2.1 Préparation des clés pour le canal crypté 251 2.2.2 Mise en place du frontal Nginx 254 2.2.3 Accès par le client Docker 260 2.2.4 Outils additionnels de diagnostic 262 2.2.5 Génération du fichier des utilisateurs autorisés 265 2.2.6 Ajout de l'authentification dans Nginx 266 2.2.7 Correction sur les headers 268 2.2.8 Gestion de la connexion 269 2.3 Un vrai registre en production 270 6/11

3. Approches complémentaires 272 3.1 Utilisation d'un service cloud déjà préparé 272 3.2 L'API du registre 273 3.3 Mise en place d'un miroir 273 3.4 Mise en place d'un cache pour les paquetages 277 3.4.1 Contournement possible 277 3.4.2 Mise en œuvre d'un cache de paquetages 279 Mise en œuvre d une architecture logicielle 1. Présentation de l'application exemple 283 1.1 Architecture 283 1.2 Installation 285 1.3 Utilisation 288 1.4 Utilité 290 1.5 Principes à l'œuvre 291 1.5.1 Un mot sur les architectures de microservices 291 1.5.2 Lien avec la programmation SOLID 291 2. Création de l'architecture exemple 293 2.1 Principes de construction 293 2.2 Détails de l'image aspnetbase 294 2.2.1 Utilité 294 2.2.2 Création dans Docker 295 2.3 Détails du service optimizer 297 2.3.1 Fonctionnement 298 2.3.2 Intégration dans Docker 302 2.3.3 Tests 304 2.3.4 Remarques 306 2.4 Détails du service calculator 307 2.4.1 Fonctionnement 307 2.4.2 Intégration dans Docker 309 2.4.3 Tests 311 7/11

2.5 Mise en place de liens entre conteneurs 313 2.6 Détails du service reporting 318 2.6.1 Fonctionnement 318 2.6.2 Dockerisation 320 2.6.3 Tests 321 2.7 Détails du service notifier 323 2.7.1 Fonctionnement 323 2.7.2 Dockerisation 325 2.7.3 Tests 326 2.8 Détails du service de persistance 328 2.9 Détails de l'image nodebase 329 2.10 Détails du service portal 331 2.10.1 Fonctionnement 331 2.10.2 Dockerisation 334 2.10.3 Tests 335 2.11 État atteint 336 3. Redéployer automatiquement avec Docker Compose 337 3.1 Principe de Docker Compose 337 3.2 Écriture du fichier docker-compose.yml 339 3.3 Mise en œuvre 340 3.3.1 Préparation 340 3.3.2 Lancement des conteneurs 341 3.3.3 Gestion des conteneurs 343 3.4 Parallélisation des traitements 344 3.5 Limites 347 4. Exploitation d'une infrastructure Docker 347 4.1 Le réseau dans Docker 347 4.1.1 Mode de fonctionnement standard (bridge) 348 4.1.2 Modes de fonctionnement alternatifs 350 4.1.3 Support des liens entre conteneurs 353 4.1.4 Autres options 355 4.1.5 Limites de la couche réseau existante 355 4.2 Les volumes Docker 358 8/11

4.2.1 Le problème de la persistance 358 4.2.2 Les volumes comme solution simple 358 4.2.3 Lien direct sur un répertoire local 361 4.2.4 Partage de volumes 362 4.2.5 Gestion des volumes orphelins 363 4.2.6 Sophistication de l'approche 364 4.2.7 Application à la gestion des logs 364 Déploiement dans un cluster 1. Description globale de l'approche 367 1.1 Objectif 367 1.2 État des lieux 368 1.3 Avertissement préalable sur notre choix 369 1.4 Déroulement de l'exemple 370 2. Montage d'un cluster CoreOS 370 2.1 Choix du cloud cible 370 2.2 Installation des outils 371 2.2.1 Azure Command Line Interface 371 2.2.2 Connexion à Azure 371 2.2.3 Préparation des certificats pour l'accès SSH 372 2.3 Création du fichier de configuration de CoreOS 372 2.4 Création du service 374 2.5 Provisionnement du cluster 374 2.6 Manipulation locale 376 2.6.1 Connexion par PuTTY 376 2.6.2 Vérification du cluster 378 2.7 Pilotage du cluster depuis une machine externe 379 2.7.1 Installation de fleetctl 380 2.7.2 Gestion de la sécurité 380 2.7.3 Découverte du cluster 381 2.8 Script de suppression du cluster 381 9/11

3. Déploiement global des services 382 3.1 Approche 382 3.2 Installation de Docker Compose 383 3.3 Publication des services 383 3.4 Reprise du fichier docker 385 3.5 Mise en œuvre 386 4. Déploiement atomique des services 390 4.1 Approche 390 4.2 Les outils 392 4.3 Gestion des fichiers d unités 393 4.3.1 Cas du service de calcul 393 4.3.2 Écriture des autres fichiers de service 396 4.4 Gestion des unités 397 4.4.1 Lancement des services simples 397 4.4.2 Vérification du fonctionnement 399 4.4.3 Modification du service de base de données 401 4.4.4 Vérification du fonctionnement du portail 404 4.4.5 Lancement des services de calcul 405 4.4.6 Vérification de l'ensemble 406 4.5 Perspectives 409 4.5.1 Gestion d'un serveur maître 409 4.5.2 Scripting de démarrage du cluster 411 4.5.3 Remarque sur la gestion de la charge 412 5. Approches alternatives 413 5.1 Docker Swarm 413 5.2 Docker Machines 414 Encore plus loin avec Docker 1. Docker dans votre usine logicielle 415 1.1 Docker à tous les étages 415 10/11

1.2 Produire des images en sortie de build 417 1.2.1 Positionnement 417 1.2.2 Utilité 417 1.2.3 Conseils de mise en place 418 1.3 Utiliser des conteneurs pour l usine logicielle 419 1.3.1 Positionnement 419 1.3.2 Utilité 419 1.3.3 Conseils de mise en place 420 1.4 Utiliser des conteneurs pour les tests 421 1.4.1 Positionnement 421 1.4.2 Utilité 421 1.4.3 Conseils de mise en place 422 1.4.4 Variante associée 422 1.5 Retour sur le registre 424 1.6 Perspectives 425 2. Avant de partir en production avec Docker 426 2.1 Sécurité 427 2.2 Restriction sur les ressources 427 2.3 Supervision 428 3. Docker et Windows 429 3.1 Le client Docker sous Windows 429 3.2 Docker sur Azure 431 3.3 Docker sous Windows Server 432 4. Conclusion 433 Index 435 11/11