4. 4 | Présentation Docker
Qu'est ce que Docker ?
Le tableau infernal du déploiement
5. 5 | Présentation Docker
Qu'est ce que Docker ?
Le tableau infernal du transport
6. 6 | Présentation Docker
Qu'est ce que Docker ?
La solution pour le transport
7. 7 | Présentation Docker
Qu'est ce que Docker ?
Le tableau devient limpide
8. 8 | Présentation Docker
Qu'est ce que Docker ?
La solution pour le déploiement
9. 9 | Présentation Docker
Qu'est ce que Docker ?
Le tableau devient limpide ici aussi
10. 10 | Présentation Docker
Qu'est ce que Docker ?
Définition
“Build, Ship and Run
Any App, Anywhere”
11. 11 | Présentation Docker
Qu'est ce que Docker ?
▪ Embarquer une application dans un container virtuel exécutable sur tout type
d’environnement
▪ Faciliter les déploiements d'une application, et la gestion du dimensionnement de
l'infrastructure sous-jacente
▪ Open source, écrit en Go, 1ère release sous licence Apache 2.0 le 13 mars 2013
▪ Société américaine, qui a été lancée par le Français Solomon Hykes et qui a levé plus de
$150 000 000. (+ de 900 contributeurs)
12. 12 | Présentation Docker
Qu'est ce que Docker ?
Comparaison VM / Docker
App
Bin / Lib
OS invité
Hyperviseur
OS hôte
Serveur physique / hardware
Bin / Lib
OS invité
App
Bin / Lib
OS invité
App
App
Bin / Lib
OS hôte
Serveur physique / hardware
Bin / Lib Bin / Lib
AppApp
Virtualisation Containers
13. 13 | Présentation Docker
Qu'est ce que Docker ?
Les limites
• Seulement sur Linux (Docker Machine pour Windows et
Mac OS X)
• Kernel 3.8+ (>= 3.10 recommandé)
• AUFS
• LXC
• Cgroups activés
• Linux namespaces activés
14. 14 | Présentation Docker
Core Concepts - LXC
à Permet d'isoler l'exécution des applications dans des contexte
d'éxécution (VE).
“Chroot on steroids”
15. 15 | Présentation Docker
Core Concepts - Namespace
Service fournit par le noyau Linux pour gérer l'isolation
- Mount namespace
• Gère l'isolation des points de montage du système de fichier vus par un groupe de process
-PID namespace
• Gère l'isolation des ID de process
-Le Net namespace
• Gère l'isolation du réseau.
-Le User namespace
• Gère l'isolation des utilisateurs et des groupes
…
16. 16 | Présentation Docker
Core Concepts - Cgroups (Control Groups)
Service fourni par le noyau pour gérer la limitation de
ressource
à On peut voir cela comme un ulimit pour un groupe de process.
17. 17 | Présentation Docker
Core Concepts - Docker Images & AUFS
• Docker Images
à Template permettant de produire d’autres Docker images ou Docker containers.
à Constituées de plusieurs layers qui vont permettre de mutualiser des données entre
plusieurs images
à Gain en terme de stockage disque, de rapidité de construction d’une nouvelle image
• AUFS (Another Union File System)
–Permet de fusionner entre elles deux hiérarchies de répertoires
–Intérêt pour Docker: pouvoir fusionner une image "base" partagée entre tous les
conteneurs avec des modifications qui ont eu lieu sur une instance de conteneur.
à Economie de disque car le système de fichiers d'un conteneur ne contient plus que le
différentiel par rapport à l'image "base”.
18. 18 | Présentation Docker
Core Concepts - Containers
C’est “l’exécutable” obtenu à partir d’une Docker Image.
Vous pouvez démarrer, arrêter, détruire, un
container Docker
Finalement un “container” est un terme générique qui
désigne un ensemble de namespace
19. 19 | Présentation Docker
Demo
– Création de notre 1ère image avec Dockerfile
– Introduction aux commandes de base
20. 20 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Chats vs bétail
21. 21 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Des chats
22. 22 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Un chat c’est mignon
23. 23 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais cela coûte cher
24. 24 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Et grossir très (trop ?) vite
25. 25 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Des vaches
26. 26 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Les vaches c’est moins mignon…
27. 27 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais c’est plus pratique
28. 28 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
On peut les rentabiliser
29. 29 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais il faut apprendre
à gérer le troupeau
30. 30 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Métaphore pour illustrer:
1. On “tue” complètement un docker après un déploiement
31. 31 | Présentation Docker
“ Un processus
par container ”
Philosophie / Fonctionnement
Montée en charge / déploiements
Métaphore pour illustrer:
•2. La capacité de montée de charge et créer des micro-services
-Augmenter taille des noeuds VS ajouter des (petits) noeuds
32. 32 | Présentation Docker
Philosophie / Fonctionnement
Volumes
à Volumes pour persister les données
à Permettent de découpler le cycle de vie des données du cycle de vie du container
à Possibilité de partager un volume entre plusieurs containers ou avec le Host
à Dossier que n’utilise pas les layers
Ex:
$ docker run -d -P -v /webapp oeeckhoutte/myImage
Liste de toutes les commandes du cli:
https://docs.docker.com/engine/reference/commandline/run/
33. 33 | Présentation Docker
Philosophie / Fonctionnement
Links
• Networking entre containers sur un même Docker Host
(docker/libnetwork permet de faire la même chose mais sur des Docker Hosts ≠)
Ex:
1er Container Mongo:
$ docker run --name mongoDB -d mongo:3.0
2ème Container lié à mongoDB:
$ docker run -t -i --link mongoDB:db busybox /bin/sh
34. 34 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Docker + CA-RA =
– Déploiements de containers avec CA-RA
– Simplification des process de déploiements dans CA-RA
– Instantanéité (Image buildée et dans Docker registry)
Confidentiel
36. 36 | Présentation Docker
Ecosystème
Docker Compose
• Création et lancement de plusieurs containers
• Se base sur un docker-compose.yml
• $ docker-compose up -d ( | ps | stop | scale api = 3 )
37. 37 | Présentation Docker
Ecosystème
Docker Hub
•Un très grand nombre d’images disponibles (> 200
000)
•Images Officielles
•Autres images avec système de notations
39. 39 | Présentation Docker
Avantages / Inconvénients
+ Coté Études, Swisslife gagnerait de l’argent
§ Exemple des PDFs:
Besoin d’installer plusieurs librairies et besoin de compiler sur la machine cible. On
ne peut pas compiler sur les machines cibles et Ottawa est sur Windows…
§ Ex: MySL, besoin d’un reverse proxy pour accéder aux tarificateurs et booster les
perfs pour les fichiers statiques.
+ Fournir un poste de dév. aux nouveaux développeurs
à Pas besoin d’installer tous les outils et tout configurer
40. 40 | Présentation Docker
Avantages / Inconvénients
+/- Les applicatifs ne sont plus liés aux repositories des OS. Attention à la validation
des paquets en terme de sécurité. Mais Tout ce qui est ajouté comme paquet
système est versionné.
+ Côté infrastructure, aujourd’hui 650 VM. à 300 VM en moins
à Economie au niveau des licences, de la RAM, des disques durs
+ Gain dans les plans de migration coté infra (Mise à jour d’OS avec 300 VMs en
moins)
+ Support 24h/24
+ Experts Docker disponibles
41. 41 | Présentation Docker
Avantages / Inconvénients
+ Côté exploitation, à tout moment on est ISO production
à Plus besoin d’aller sur Google ou de demander à 5 personnes pour
trouver quel paquet installer (ex Fin du support de Tomcat 6).
à Gain en jour homme, pour trouver la bonne version
à Pas besoin de se demander comment mettre à jour Node en Re7
-Changer de mentalité.
§ Plus de Docker que de VM car on est sur du Micro service
-Bien réfléchir à l’organisation et le partage des responsabilités
-Prévoir une montée en compétences
43. 43 | Présentation Docker
Retour XP 3SI
Suite à la MEP de Docker en 2014/ 2015:
+ Banaliser les machines
+ Amélioration de l’efficacité des équipes
§ Montées de version des composants facilitées
§ Changements des composants facilités
+ Livraisons facilités
+ Maintenir le niveau de service
+ Banalisation des MEP techniques
à Apporter Docker c’est 20% de technique et 80% d’organisationnel (qui fait quoi ? Qui est
responsable ?)