SlideShare une entreprise Scribd logo
1  sur  50
Docker – pour quoi faire ?
Cédric & Cédric
www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
2
Meet the Team
Cédric Leblond
Consultant DevOps – MVP ALM
Je conçois l’architecture d’applications
web et mobiles dans le cloud.
J’accompagne mes clients dans la mise en
oeuvre d’architecture micro-services.
Cédric Derue
Solution Architect – MVP Azure
@leblond_c @cderue
Je développe des applications en .NET.
Et j’accompagne mon client dans son
voyage vers les pratiques modernes du
Software Craftmanship, Agile, DevOps.
Introduction : Défis rencontrés par les développeurs et admins
Créer les
applications prêtes
pour la production
Distribuer et tester
les applications à
la demande
Exécuter les
applications avec
un service 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?
Qu'est ce qu'un conteneur?
machines virtuelles traditionnelles = virtualisation hardware
VM VM VM
Qu'est ce qu'un conteneur?
machines virtuelles traditionnelles = virtualisation hardware
VM VM VM
Qu'est ce qu'un conteneur?
VM VM VM
machines virtuelles traditionnelles = virtualisation hardware
Qu'est ce qu'un conteneur?
VM VM VM
conteneurs = virtualisation système d'exploitation (OS)
Applications
Kernel
machines virtuelles traditionnelles = virtualisation hardware
Qu'est ce qu'un conteneur?
VM VM VM
conteneurs = virtualisation système d'exploitation (OS)
Applications
Kernel
machines virtuelles traditionnelles = virtualisation hardware
CONTAINER CONTAINER CONTAINER
Qu'est ce qu'un conteneur?
VM VM VM
conteneurs = virtualisation système d'exploitation (OS)
Applications
Kernel
machines virtuelles traditionnelles = virtualisation hardware
CONTAINER CONTAINER CONTAINER
Qu'est ce qu'un conteneur?
VM VM VM
conteneurs = virtualisation système d'exploitation (OS)
Applications
Kernel
machines virtuelles traditionnelles = virtualisation hardware
CONTAINER CONTAINER CONTAINER
Windows Server Containers
vitesse et densité maximales
CONTAINER CONTAINER CONTAINER
Qu'est ce qu'un conteneur?
VM VM VM
conteneurs = virtualisation système d'exploitation (OS)
Applications
Kernel
machines virtuelles traditionnelles = virtualisation hardware
CONTAINER CONTAINER CONTAINER
Windows Server Containers
vitesse et densité maximales
CONTAINER CONTAINER CONTAINER
Hyper-V Containers
Isolation et performance
Kernel
CONTAINER
Kernel
CONTAINER
Kernel
CONTAINER
Utiliser des logiciels directement
INSTALLER ET MAINTENIR SON POSTE DE DÉVELOPPEMENT
Un peu de vocabulaire sur les conteneurs
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 Engine
Créer, livrer et exécuter les conteneurs Docker sur un hôte physique ou virtuel.
Docker
Ensemble de projets open source pour créer, gérer et distribuer les conteneurs.
Registry Service (Docker Hub or Docker Trusted Registry)
Cloud ou serveur base du service de stockage et distribution de nos images.
Docker Compose
Fichier de définition et d’exécution d’une application multi-conteneurs.
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
API DB
Create images
(docker build)
Deploy
containers
WebWeb Web
API
API
DB
Docker Registry
Docker Hub/
Repository
Pull
images
Publish
Web DBAPI
Web
• docker pull
• docker login
• docker push
Un exemple usine logicielle de démo
34
ASP.NET Core
Visual Studio
Docker
VSTS BUILD
Compiler, tester, publier
le site
Créer images ASP.NET
Déclencher
la build
Azure Container Service
Mesos / Marathon
Déployer les
conteneurs
Déclencher
le déploiement
Docker Hub
Tirer les images
(docker build)
Publier les images
(docker publish)
Machines Linux,
Windows, ARM
Créer images
(docker build)
GitHub
punlimitlab
Tirer les
sources
Publier les
changements
VSTS Release
Management
Déclencher
la release
Créer images du site
Démarrer le site
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
Canary releasing
Cluster
Auto-scaling
Passage à la nouvelle version
Et la suite ?
• Serverless
◦ Azure Functions
◦ AWS Lambda
• DevSecOps
• NoOps
www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
61
Merci à nos sponsors
PLATINUM
LOCAUX
PARTENAIRES MEDIA
www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
62
Sponsors internationaux
www.azug.fr
© 2017 AZUG FR. All Rights Reserved.
63
Nous suivre
Facebook
facebook.com/groups/azugfr
Twitter
twitter.com/AZUGFR
Meetup
meetup.com/AZUG-FR/
Web
www.azug.fr
Twitter
twitter.com/MugLyon
Web
https://muglyon.github.io
Meetup
meetup.com/MugLyon
Merci
d’être venus
A bientôt !

Contenu connexe

Tendances

Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
Luis Lopez
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 

Tendances (20)

Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et Gaudi
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
 

Similaire à Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue

JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
qsdqsd4
 

Similaire à Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue (20)

docker.pptx
docker.pptxdocker.pptx
docker.pptx
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur Azure
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
What is Docker
What is Docker What is Docker
What is Docker
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 
Devops d-day 2017 docker openstack docker
Devops d-day 2017  docker openstack dockerDevops d-day 2017  docker openstack docker
Devops d-day 2017 docker openstack docker
 
Prise en main de Docker
Prise en main de DockerPrise en main de Docker
Prise en main de Docker
 

Plus de AZUG FR

Meetup AZUG FR @ IdeaStudio - 5 Février 2019
Meetup AZUG FR @ IdeaStudio - 5 Février 2019Meetup AZUG FR @ IdeaStudio - 5 Février 2019
Meetup AZUG FR @ IdeaStudio - 5 Février 2019
AZUG FR
 

Plus de AZUG FR (20)

I want my model to be deployed ! (another story of MLOps)
I want my model to be deployed ! (another story of MLOps)I want my model to be deployed ! (another story of MLOps)
I want my model to be deployed ! (another story of MLOps)
 
Packer, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec AzurePacker, Terraform, Ansible avec Azure
Packer, Terraform, Ansible avec Azure
 
Tester avant de déployer ; comment tester ses déploiements ARM.
Tester avant de déployer ; comment tester ses déploiements ARM.Tester avant de déployer ; comment tester ses déploiements ARM.
Tester avant de déployer ; comment tester ses déploiements ARM.
 
Dev & run d'un site marchant dans Azure
Dev & run d'un site marchant dans AzureDev & run d'un site marchant dans Azure
Dev & run d'un site marchant dans Azure
 
Azure DNS Privé
Azure DNS PrivéAzure DNS Privé
Azure DNS Privé
 
Meetup AZUG FR @ IdeaStudio - 5 Février 2019
Meetup AZUG FR @ IdeaStudio - 5 Février 2019Meetup AZUG FR @ IdeaStudio - 5 Février 2019
Meetup AZUG FR @ IdeaStudio - 5 Février 2019
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Ignite 2018 - Nouveautés governance et management (Manon Pernin)
Ignite 2018 - Nouveautés governance et management (Manon Pernin)Ignite 2018 - Nouveautés governance et management (Manon Pernin)
Ignite 2018 - Nouveautés governance et management (Manon Pernin)
 
Ignite 2018 - Nouveauté stockage (Didier Esteves)
Ignite 2018 - Nouveauté stockage (Didier Esteves)Ignite 2018 - Nouveauté stockage (Didier Esteves)
Ignite 2018 - Nouveauté stockage (Didier Esteves)
 
Ignite 2018 - Coups de coeur (Benoit Sautiere)
Ignite 2018 - Coups de coeur (Benoit Sautiere)Ignite 2018 - Coups de coeur (Benoit Sautiere)
Ignite 2018 - Coups de coeur (Benoit Sautiere)
 
Ignite 2018 - nouveautés sécurité et réseau (Laurent Yin)
Ignite 2018 - nouveautés sécurité et réseau (Laurent Yin)Ignite 2018 - nouveautés sécurité et réseau (Laurent Yin)
Ignite 2018 - nouveautés sécurité et réseau (Laurent Yin)
 
GAB 2018 PARIS - Enrichir vos applications avec Azure AI services par Houssem...
GAB 2018 PARIS - Enrichir vos applications avec Azure AI services par Houssem...GAB 2018 PARIS - Enrichir vos applications avec Azure AI services par Houssem...
GAB 2018 PARIS - Enrichir vos applications avec Azure AI services par Houssem...
 
GAB 2018 PARIS - Mettez un peu de CI/CD dans vos projets data! par Guillaume...
GAB 2018 PARIS - Mettez un peu de CI/CD dans vos projets data!  par Guillaume...GAB 2018 PARIS - Mettez un peu de CI/CD dans vos projets data!  par Guillaume...
GAB 2018 PARIS - Mettez un peu de CI/CD dans vos projets data! par Guillaume...
 
GAB 2018 PARIS - Gouvernance Azure, comment éviter les écueils par Benoît Sau...
GAB 2018 PARIS - Gouvernance Azure, comment éviter les écueils par Benoît Sau...GAB 2018 PARIS - Gouvernance Azure, comment éviter les écueils par Benoît Sau...
GAB 2018 PARIS - Gouvernance Azure, comment éviter les écueils par Benoît Sau...
 
Meetup AZUG FR Dec 2017 @ Arolla
Meetup AZUG FR Dec 2017 @ ArollaMeetup AZUG FR Dec 2017 @ Arolla
Meetup AZUG FR Dec 2017 @ Arolla
 
Meetup AZUG FR Oct 2017 @ Cellenza
Meetup AZUG FR Oct 2017 @ CellenzaMeetup AZUG FR Oct 2017 @ Cellenza
Meetup AZUG FR Oct 2017 @ Cellenza
 
Analysez vos textes avec Cognitive Services
Analysez vos textes avec Cognitive ServicesAnalysez vos textes avec Cognitive Services
Analysez vos textes avec Cognitive Services
 
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
 
Gab17 lyon - Blockchain as a service dans Azure by Igor Leontiev
Gab17 lyon - Blockchain as a service dans Azure by Igor LeontievGab17 lyon - Blockchain as a service dans Azure by Igor Leontiev
Gab17 lyon - Blockchain as a service dans Azure by Igor Leontiev
 
GAB 2017 PARIS - IoT Azure - Aymeric Weinbach
GAB 2017 PARIS - IoT Azure - Aymeric WeinbachGAB 2017 PARIS - IoT Azure - Aymeric Weinbach
GAB 2017 PARIS - IoT Azure - Aymeric Weinbach
 

Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue

  • 1. Docker – pour quoi faire ? Cédric & Cédric
  • 2. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 2 Meet the Team Cédric Leblond Consultant DevOps – MVP ALM Je conçois l’architecture d’applications web et mobiles dans le cloud. J’accompagne mes clients dans la mise en oeuvre d’architecture micro-services. Cédric Derue Solution Architect – MVP Azure @leblond_c @cderue Je développe des applications en .NET. Et j’accompagne mon client dans son voyage vers les pratiques modernes du Software Craftmanship, Agile, DevOps.
  • 3. Introduction : Défis rencontrés par les développeurs et admins Créer les applications prêtes pour la production Distribuer et tester les applications à la demande Exécuter les applications avec un service optimal
  • 4. Docker – de quoi s’agit-il ? DOCKER EST UNE PLATEFORME DE LOGICIELS CONTENEURISÉS
  • 5. La vision de la plateforme Docker http://docker.com/Enterprise
  • 6. Paquet standard pour le logiciel http://docker.com/what-docker
  • 7. 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
  • 8. Qu'est ce qu'un conteneur?
  • 9. Qu'est ce qu'un conteneur? machines virtuelles traditionnelles = virtualisation hardware VM VM VM
  • 10. Qu'est ce qu'un conteneur? machines virtuelles traditionnelles = virtualisation hardware VM VM VM
  • 11. Qu'est ce qu'un conteneur? VM VM VM machines virtuelles traditionnelles = virtualisation hardware
  • 12. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware
  • 13. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER
  • 14. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER
  • 15. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER Windows Server Containers vitesse et densité maximales CONTAINER CONTAINER CONTAINER
  • 16. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER Windows Server Containers vitesse et densité maximales CONTAINER CONTAINER CONTAINER Hyper-V Containers Isolation et performance Kernel CONTAINER Kernel CONTAINER Kernel CONTAINER
  • 17. Utiliser des logiciels directement INSTALLER ET MAINTENIR SON POSTE DE DÉVELOPPEMENT
  • 18. Un peu de vocabulaire sur les conteneurs 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 Engine Créer, livrer et exécuter les conteneurs Docker sur un hôte physique ou virtuel. Docker Ensemble de projets open source pour créer, gérer et distribuer les conteneurs. Registry Service (Docker Hub or Docker Trusted Registry) Cloud ou serveur base du service de stockage et distribution de nos images. Docker Compose Fichier de définition et d’exécution d’une application multi-conteneurs.
  • 19. Docker for Windows Docker Engine installé et configuré automatiquement pour Windows Desktop Il existe aussi Docker for MAC Docker for Linux
  • 20. 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
  • 21. Utiliser Visual Studio CONSTRUIRE ET DÉBOGUER L’APPLICATION SUR SON POSTE DE DÉVELOPPEMENT
  • 22. Dockerfile – le fichier de build de l’image
  • 23. 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
  • 24. docker-compose files – les fichiers de création de mon environnement
  • 25. 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
  • 26. CI/CD avec Docker DÉPLOYER EN CONTINUE LES CORRECTIONS ET NOUVELLES FONCTIONNALITÉS
  • 27. 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
  • 28. API DB Create images (docker build) Deploy containers WebWeb Web API API DB Docker Registry Docker Hub/ Repository Pull images Publish Web DBAPI Web • docker pull • docker login • docker push
  • 29. Un exemple usine logicielle de démo 34 ASP.NET Core Visual Studio Docker VSTS BUILD Compiler, tester, publier le site Créer images ASP.NET Déclencher la build Azure Container Service Mesos / Marathon Déployer les conteneurs Déclencher le déploiement Docker Hub Tirer les images (docker build) Publier les images (docker publish) Machines Linux, Windows, ARM Créer images (docker build) GitHub punlimitlab Tirer les sources Publier les changements VSTS Release Management Déclencher la release Créer images du site Démarrer le site
  • 30. Exécuter les applications avec un service optimal SURVEILLER LES SERVICES ET AGIR RAPIDEMENT
  • 31. 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)
  • 32. Docker dans Microsoft Azure • Machines virtuelles Azure avec l’extension Docker • Azure Container Service • Docker for Azure
  • 35. Vamp
  • 36. Pourquoi utiliser Vamp ? Comment gérer le cycle de vie des conteneurs ? • Blue/Green Deployment • A/B testing • Monitoring • Scaling temps réel
  • 45. Passage à la nouvelle version
  • 46. Et la suite ? • Serverless ◦ Azure Functions ◦ AWS Lambda • DevSecOps • NoOps
  • 47. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 61 Merci à nos sponsors PLATINUM LOCAUX PARTENAIRES MEDIA
  • 48. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 62 Sponsors internationaux
  • 49. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 63 Nous suivre Facebook facebook.com/groups/azugfr Twitter twitter.com/AZUGFR Meetup meetup.com/AZUG-FR/ Web www.azug.fr Twitter twitter.com/MugLyon Web https://muglyon.github.io Meetup meetup.com/MugLyon

Notes de l'éditeur

  1. Docker délivre des outils ouverts pour aider les développeurs et administrateurs Docker enables developers and IT admins to build, ship and run any application, anywhere Build, Ship, Run Docker aims to deliver open tools to help developers build applications with open APIs to help sysadmins better manage these applications http://docker.com/company
  2. principalement le fameux : But It works on my PC ! Mais tentons d’être un peu plus précis Installer et maintenir son poste de développement Nombreux outils de développements Plusieurs versions de ces outils Certains outils utilisés rarement Certains complexes à installer Construire et déboguer l’application sur son poste de développement Application a des dépendances vers la base de données, d’autres services Déboguer, c’est à dire, reproduire le bogue sur son poste Créer un environnement complet pour tester, ou la production En créer un similaire que ce soit pour les tests d’un BA, de l’utilisateur Infra As Code, Configuration As Code Déployer en continue les corrections et nouvelles fonctionnalités Automatiser la chaine de construction, tests et déploiement Limiter le risque par des release incrémentales Découpler le déploiement et la version (blue-green, canary, dark launch, feature toggle) Réduire la taille du déploiement Optimiser pour la résilience (dans l’iso 9126 le plus proche semble  Fiabilité (Reliability) / La tolérance aux fautes (Fault Tolerance) Assurer la sécurité des applications Vulnérabilités, Surface d’exposition Surveiller les services et agir rapidement Le monitoring des machines, infrastructure, des services Les logs pour comprendre … Ajuster la capacité des applications aux charges Gagner en productivité En automatisant tout ce qui peut l’être pour surtout éviter les erreurs (et un peu de temps) Utiliser des outils commun
  3. http://docker.com/what-docker
  4. L’idée est bien d’avoir une seule plateforme d’outils pour tout. -> simplicité -> standard ouvert -> plateforme CAAS : Container As A Service Dès la première annonce partenariat avec Microsoft cette idée de 1 docker est très présente https://news.microsoft.com/2014/10/15/dockerpr “Developers and organizations that want to create container applications using Docker will be able to use either Windows Server or Linux with the same growing Docker ecosystem of users, applications and tools.”
  5. Le conteneurs docker enveloppent dans un système de fichier tout les outils, logiciels, code, librairies systèmes nécessaires pour exécuter une application. Ils sont dans un package de binaires : une image. Ces images, on les réutilisent pour en construire une nouvelle. Cela garantie que le logiciel qui s’éxécute sera toujours le même , quelque soit l’environnement . (pas qu’il va toujours fonctionner)
  6. Le conteneur contient l’application et tous les librairies dépendants. Mais partage le même noyau avec les autres conteneurs. Il s’éxécute dans l’espace utilisateur du système, dans des process isolés. (l’espace utilisateur est surtout une notion Linux mais cette isolation est aussi recrée côté Windows). Ils peuvent s’éxécuter sur un ordinateur et sur toute infra (on reviendra dessus avec les orchestrateurs)  peuvent être très petits. Gain en densité et en performance de démarrage par rapport à la VM. La machine virtuelle inclut l’application, les librairies, et l’intégralité de l’OS.  donc des Go
  7. Plus de densité Plus rapide à démarrer Presentation à Ignite 2016 Microsoft and the container ecosystem : http://microsoft.com/containers Windows Container Doc’s : http://aka.ms/windowscontainers Community Link’s: http://aka.ms/windowscontainers/community
  8. L’installation peut être compliqué, demander des heures de recherche La gestion des dépendances entre les versions d’outils est parfois compliqué Docker permet d’installer d’une seule manière, tous les outils Docker permet de construire sur les outils existants, sur une version spécifique si besoin
  9. http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  10. Fichier compose d’une application utilisant mongo
  11. foundations (fondamentaux) comprehensive configuration management continuous integration continuous testing https://continuousdelivery.com/foundations/ les patterns (reusable and proven strategy) : deployment pipeline Only build packages once Deploy the same way to every environment Smoke test your deployments Keep your environments similar Low-risk Releases are Incremental (circuit breaker, release change independently) Decouple Deployment and Release (blue-green, canary, dark launch,feature toggle) Focus on Reducing Batch Size Optimize for Resilience (dans l’iso 9126 le plus proche semble  Fiabilité (Reliability) / La tolérance aux fautes (Fault Tolerance) https://continuousdelivery.com/implementing/patterns
  12. Notre démo principale est de faire tourner le site ASP.NET Core "PartsUnlimited" sur un Raspberry PI 2 au sein d'un conteneur Docker Linux. Du pure Geek, personne n'a encore fait cela à notre connaissance ;) Le Rasperry PI 2 est un objet connecté. Nous enverrons ces données de télémétrie vers IOT Azure. Nous allons aussi mettre en place un pipeline de build et déploiement avec VSTS, et pousserons les sources modifiées automatiquement vers GitHub. (et pourquoi pas créer une pull request vers le repo d'origine)
  13. Github  Base ASPNET conteneur// appli Build 
  14. Exécuter les applications avec un service optimal
  15. Les orchestrateurs peuvent être des
  16. Après le déploiements de l’environnement test
  17. To create a blueprint for describing the (micro)services, connections and dependencies between them, gateways, environment variables or the properties for scaling these services, Vamp provides its own domain-specific language (DSL) in a YAML format.