Vous êtes sur la page 1sur 49

Docker – pour quoi faire ?

Introduction : Défis rencontrés par les développeurs et admins

Créer les Distribuer et Exécuter les


applications tester les applications avec
prêtes pour la applications à la un service
production demande optimal
Docker – de quoi s’agit-il ?
DOCKER EST UNE PLATEFORME DE LOGICIELS
CONTENEURISÉS
La vision de la plateforme Docker
http://docker.com/Enterprise
Paquet standard pour le logiciel
http://docker.com/what-docker
Démo : Hello World
• docker run -d -t --name myhello docker/whalesay bash
• docker exec -it myhello cowsay "Hello à tous" 
• docker exec -it myhello ps

• -d : lancer en mode detaché


• -i : lancer en interactif
• -t : créer un pseudo tty
Qu'est ce qu'un conteneur?

Application

OS

Hardware
Qu'est ce qu'un conteneur?

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?

OS

Hardware

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?
conteneurs = virtualisation système d'exploitation (OS)

OS Applications

Kernel

Hardware

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?
conteneurs = virtualisation système d'exploitation (OS)
CONTAINER CONTAINER CONTAINER

OS Applications

Kernel

Hardware

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?
conteneurs = virtualisation système d'exploitation (OS)
CONTAINER CONTAINER CONTAINER

OS Applications

Kernel

Hardware

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?
conteneurs = virtualisation système d'exploitation (OS) Windows Server Containers
CONTAINER CONTAINER CONTAINER
vitesse et densité maximales
CONTAINER CONTAINER CONTAINER

OS Applications

Kernel
Kernel

Hardware

machines virtuelles traditionnelles = virtualisation hardware


VM VM VM
Application

OS

Hardware
Qu'est ce qu'un conteneur?
conteneurs = virtualisation système d'exploitation (OS) Windows Server Containers
CONTAINER CONTAINER CONTAINER
vitesse et densité maximales
CONTAINER CONTAINER CONTAINER

OS Applications

Kernel
Kernel

Hardware
Hyper-V Containers
machines virtuelles traditionnelles = virtualisation hardware Isolation et performance
VM VM VM CONTAINER CONTAINER CONTAINER
Application

OS
Kernel Kernel Kernel
Hardware
Hyper-V
Utiliser des logiciels directement
INSTALLER ET MAINTENIR SON POSTE DE
DÉVELOPPEMENT
Un peu de vocabulaire sur les conteneurs
Docker
Ensemble de projets open source pour créer, gérer et distribuer les conteneurs.

Docker Engine
Créer, livrer et exécuter les conteneurs Docker sur un hôte physique ou virtuel.

Docker Image
La base d’un conteneur Docker. Représente une application complète.

Docker Container
L’unité standard dans laquelle l’application réside et s’exécute.

Docker Compose
Fichier de définition et d’exécution d’une application multi-conteneurs.

Registry Service (Docker Hub or Docker Trusted Registry)


Cloud ou serveur base du service de stockage et distribution de nos images.
Docker for
Windows
Docker Engine installé et
configuré automatiquement
pour Windows Desktop

Il existe aussi
Docker for MAC
Docker for Linux
Démo : POC MongoDB et Python 
• Contexte : nous avions un accès dégradé à notre base. Son origine était la
lecture d’objets très complexes de transactions
• But : vérifier rapidement l’utilisation d’un cache persisté avec MongoDB

• docker run --name my-mongo -d mongo


• docker run --link my-mongo:mongo -d app-utilisant-mongo

• --link : lien réseau vers un conteneur


Utiliser Visual Studio
CONSTRUIRE ET DÉBOGUER L’APPLICATION SUR SON
POSTE DE DÉVELOPPEMENT
Dockerfile – le fichier de build de l’image
Quelques instructions du Dockerfile à la loupe
• FROM : Définit l’image de base
• RUN : Exécute une commande sur l’image de base
• EXPOSE : Définit le(s) port(s) d’écoute du container
• VOLUME : Définit un point de montage sur l’hôte ou sur un autre container
• ENTRYPOINT : Configure un container comme un exécutable
docker-compose files – les fichiers de création de mon environnement
Démo : TODOList API et MongoDB
• L’API enregistre une liste de taches dans la base MongoDB
• L’application Angular permet de les gérer avec une interface graphique

• docker-compose –f ./api/docker-compose.yml up
CI/CD avec Docker
DÉPLOYER EN CONTINUE LES CORRECTIONS ET
NOUVELLES FONCTIONNALITÉS
Les patterns du Continuous Delivery
• Automatiser la chaine de construction, tests et déploiement
◦ Construire une seule fois les paquets
◦ Déployer de la même manière sur tous les environnements
◦ Tester les déploiements avec des tests de fumée
◦ Conserver des environnements similaires

• Limiter le risque par des release incrémentales


• Découpler le déploiement et la version (blue-green deployment, canary
releasing, dark launch, feature toggle)
• Réduire la taille du déploiement
• Optimiser pour la résilience
Docker Registry
• docker pull
• docker login
Deploy
• docker push Web API DB containers

Docker Hub/
Repository

Pull
Publish
images Web Web Web API
Create images
(docker build)

API DB

Web API DB
Un exemple usine logicielle de démo
Docker Hub

Publier les images


ASP.NET Core Créer images (docker publish)
Visual Studio (docker build)
Docker Tirer les images
(docker build)

Publier les Déployer les


Tirer les Machines Linux, conteneurs
sources changements Créer images du site
Compiler, tester, publierWindows, ARM
le site Démarrer le site
Créer images ASP.NET

Déclencher Déclencher Déclencher


la build la release le déploiement
GitHub VSTS BUILD VSTS Release
punlimitlab Management Azure Container Service
Mesos / Marathon

33
Exécuter les applications avec un service
optimal
SURVEILLER LES SERVICES ET AGIR RAPIDEMENT
Orchestrateurs
• Mesosphere DC/OS

• Docker Swarm

• Kubernetes

• L’offre est variée et l’hébergement des orchestrateurs large :


◦ Amazon EC2 Container Services (ECS)
◦ Azure Container Services (DC/OS, Swarm, Kubernetes)
◦ Docker for Azure, Docker for AWS (Swarm)
◦ Rancher (Mesos, Swarm, Kubernetes)
Docker dans Microsoft Azure
• Machines virtuelles Azure avec l’extension Docker
• Azure Container Service
• Docker for Azure
Azure Container Service – DC/OS
Les services avec DC/OS
Vamp
Pourquoi utiliser Vamp ?
Comment gérer le cycle de vie des conteneurs ?
• Blue/Green Deployment
• A/B testing
• Monitoring
• Scaling temps réel
VAMP DSL
Démo DC/OS, VAMP
Premier blueprint
Déploiement et monitoring
Version initiale
Blue Green Deployment
Cluster

Version N

Load balancer
Version N+1
Canary releasing
Cluster

Version N
80%

Load balancer
Version N+1
20%
Auto-scaling
Passage à la nouvelle version
Et la suite ?
• Serverless
◦ Azure Functions
◦ AWS Lambda

• DevSecOps
• NoOps
60

Merci à nos sponsors


PLATINUM

LOCAUX

PARTENAIRES MEDIA

www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
61

Sponsors internationaux

www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
62

Nous suivre

Twitter Web Web


twitter.com/AZUGFR www.azug.fr
https://muglyon.github.io

Meetup Facebook Twitter


meetup.com/AZUG-FR/ facebook.com/groups/azugfr twitter.com/MugLyon

Meetup
meetup.com/MugLyon

www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
Merci
d’être venus

A bientôt !