Introduction aux conteneurs Stanislas Quastana & Pascal Sauliere Architectes Infrastructure, CISSP Microsoft DX
Agenda Qu est ce qu un conteneur? Conteneurs Linux Conteneurs Windows Synthèse
Qu est ce qu un conteneur?
Qu est ce qu un conteneur? Virtualisation d OS Perception d environnement isolé et indépendant Package déclaratif Unité de déploiement «universelle» Idéal pour le développement et les tests
Quels usages pour les conteneurs?
Un peu d histoire sur les conteneurs Conteneur = unité de transport intermodal Virtualisation de processus UNIX chroot (1979-1982) BSD Jail (1998) Parallels Virtuozzo (2001) Solaris Containers (2005) Linux LXC (2008) Docker (2013)
App A App A App B Bins/Libs Bins/Libs Bins/Libs App B Bins/Libs Machines virtuelles versus conteneurs Guest OS Guest OS Guest OS Guest OS App A App A App B App B App B App B App B App B Hypervisor Host OS Server Bins/Libs Bins/Libs Docker Engine Host OS Server
Docker Solution pour manipuler des conteneurs LXC Modèle avec architecture de type client / serveur Client Docker Moteur Docker Communication client / serveur avec des appels en REST Ensemble de commandes (une quarantaine) Décrire l image d une application à déployer dans un conteneur Publier l image dans un repository (public ou privé) Interroger un repository Gérer les versions des images dans un repository (appelé Registry) Déployer des images
Client et moteur Docker Client Docker (ligne de commande) disponible sur Mac, Linux et Windows docker run pour instancier un nouveau conteneur docker pull pour récupérer une image docker build pour construire une nouvelle image Moteur Docker (Docker Host) disponible uniquement sur une distribution Linux (CoreOS, Ubuntu, RedHat ) La machine Linux peut être une machine virtuelle sur Azure, Hyper-V
Images Docker Chaque image commence par une image de base (ex: Ubuntu) ou plus «avancée» comme Node.js installé sur Ubuntu Chaque image est ensuite constituée d'une série de couches baptisées «layers»
Kernel, images et conteneurs
Dockerfile L ensemble des commandes pour construire une image, le tout rassemblé et stocké dans un fichier
Docker Hub : le référentiel public Il offre La «Registry» : système de stockage pour les images de conteneurs Le «public index» : référencement des images publiques avec système d évaluation / classement «automated builds» pour lier un dépôt de code GitHub ou Bitbucket et créer automatiquement des images Docker à chaque commit
Docker en résumé Docker Engine Docker Client Docker Registry (Trusted Docker Registry & Docker Hub) Docker Compose Docker Swarm
Docker & Microsoft
Docker dans le MarketPlace d Azure
Applications en conteneur dans le MarketPlace d Azure
Démo Docker sur Azure
Partenariat Microsoft - Docker Extension des API et outils Docker pour supporter les conteneurs Windows Client Docker CLI sur Windows Prochainement client Docker unique pour gérer les conteneurs Linux et Windows Extension Docker pour les VM Linux sur Azure Support de Docker Compose et Docker Swarm sur Azure Outils Visual Studio pour Docker https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4 Conteneurs Docker dans le Marketplace Azure
Conteneurs Windows
Windows Technologies d isolation dans Windows Process Job Object Windows Server Container Hyper-V Container Hyper-V Virtual Machine Plus rapide et plus efficace Plus isolé
Conteneurs dans Windows Server 2016
Conteneur Windows Server Environnement d exécution isolé des applications de la machine hôtes Docker PS WMI Container Management stack Mode utilisateur Système hôte Kernel Mode Kernel
Conteneur Hyper-V Environnement d exécution isolé pour des applications profitant d une isolation additionnelle apporté par Hyper-V Docker PS WMI partition(s) Hyper-V Container Management stack Mode utilisateur Kernel Système hôte Kernel Kernel Mode Kernel Hyperviseur (Hyper-V)
Ecosystème conteneur Container Run-Time Container Images Image Repository Application B Application A Application B Linux Application A Application Framework B Application Framework A Application Framework B
Container Images PS>Get-ContainerImage Name Publisher Version IsOSImage ------ ---------- -------- ------------ Windows CN=Microsoft 10.0.10250.0 True Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows Container image: Node Container: Node -OFF Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node C:\Windows Container image: Node Container: Node Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node Inside the container [abc-123] PS> cmd /c node.msi C:\Windows C:\Node Container image: Node Container: Node Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node Inside the container [abc-123] PS> cmd /c node.msi Outside the container PS> Stop-Container Node C:\Windows C:\Node Container image: Node Container: Node -OFF Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node Inside the container [abc-123] PS> cmd /c node.msi Outside the container PS> Stop-Container Node PS> New-ContainerImage ContainerName Node Name TRNode C:\Windows C:\Node TRNode Container image: Node Container: Node -OFF Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node Inside the container [abc-123] PS> cmd /c node.msi Outside the container PS> Stop-Container Node PS> New-ContainerImage ContainerName Node Name TRNode PS> New-Container -Name Web' ContainerImageName TRNode TRNode Container image: Web Container: Web -OFF Image Repository
Container Images PS> New-Container -Name Node' -ContainerImageName 'Windows PS> Start-Container Node Inside the container [abc-123] PS> cmd /c node.msi Outside the container PS> Stop-Container Node PS> New-ContainerImage ContainerName Node Name TRNode PS> New-Container -Name Web' ContainerImageName TRNode PS> Start-Container Web TRNode C:\Windows C:\Node TRNode Container image: Web Container: Web Image Repository
Dépôt d images Central Image Repository Container Host 1 Application C Application A Application D Application B Container Host 2 Application Framework A Application Framework B Container Host 3
Processus de développement & conteneurs Local Repository Central Repository Application Framework A
Processus de développement & conteneurs Local Repository Central Repository Application Framework A Les développeurs peuvent choisir les frameworks applicatifs qu ils désirent et les récupérer en local depuis un dépôt central Application Framework A
Processus de développement & conteneurs Local Repository Central Repository Application Framework A Les développeurs peuvent choisir les frameworks applicatifs qu ils désirent et les récupérer en local depuis un dépôt central Application Framework A
Processus de développement & conteneurs using System; class Program { static void Main() { } } Local Repository Central Repository Application Framework A Application Framework A
Processus de développement & conteneurs using System; class Program { static void Main() { } } Local Repository Central Repository Application Framework A Application Framework A
Processus de développement & conteneurs using System; class Program { static void Main() { } } Local Repository Central Repository Application Framework A Application Framework A
Processus de développement & conteneurs using System; class Program { static void Main() { } } Local Repository Central Repository Application Framework A Application Framework A
Cycle de vie des conteneurs Stage Production
Options de déploiement des conteneurs
Conteneur Windows Server ou conteneur Hyper-V? Windows Server Container Multi-location de confiance Hautement automatisable Montée en charger / élasticité Faible empreinte Hyper-V Containers Multi-location Workload avec contraintes réglementaires
Windows Container OS Windows Server Core Hautement compatible Applications existantes fonctionnant sur Windows Server configuré en mode Core Nano Server Optimisé pour la haute densité de conteneurs Applications Born in the cloud ;-) Applications distribuées 4 0 30 0
Administration des Windows containers PowerShell Gestion native Local Hautement automatisable Similaire à des cmlets pour gérer des VM Docker Téléchargement séparé Local Dépôt central Pour les personnes habituées à Docker
Démo Conteneurs Windows
https://www.opencontainers.org/
Retrouvez nous sur la Microsoft Virtual Academy http://aka.ms/mvafr Stanislas Quastana Pascal Sauliere http://aka.ms/stanislas Twitter : @squastana http://aka.ms/pascals Twitter : @psauliere
2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Microsoft Azure and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION
Annexes
Lectures complémentaires Containers: Docker, Windows and Trends http://azure.microsoft.com/blog/2015/08/17/cont ainers-docker-windows-and-trends/ How to use docker-machine with Azure https://azure.microsoft.com/enus/documentation/articles/virtual-machinesdocker-machine/