1 | Présentation Docker
26/01/16
CONSTRUIRE, DEPLOYER
EXÉCUTER VOS APPLICATIONS
PARTOUT!
2 | Présentation Docker
Agenda
• Qu'est ce que Docker ?
• Core Concepts
• Demo: création de notre 1ère image (Introduction Dockerfile)
• Philosophie / Fonctionnement
• Ecosystème
• Avantages / Inconvénients
• Demo avec du Tomcat
• Retour d’expérience 3SI
3 | Présentation Docker
Qu'est ce que Docker ?
4 | Présentation Docker
Qu'est ce que Docker ?
Le tableau infernal du déploiement
5 | Présentation Docker
Qu'est ce que Docker ?
Le tableau infernal du transport
6 | Présentation Docker
Qu'est ce que Docker ?
La solution pour le transport
7 | Présentation Docker
Qu'est ce que Docker ?
Le tableau devient limpide
8 | Présentation Docker
Qu'est ce que Docker ?
La solution pour le déploiement
9 | Présentation Docker
Qu'est ce que Docker ?
Le tableau devient limpide ici aussi
10 | Présentation Docker
Qu'est ce que Docker ?
Définition
“Build, Ship and Run
Any App, Anywhere”
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Présentation Docker
Demo
– Création de notre 1ère image avec Dockerfile
– Introduction aux commandes de base
20 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Chats vs bétail
21 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Des chats
22 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Un chat c’est mignon
23 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais cela coûte cher
24 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Et grossir très (trop ?) vite
25 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Des vaches
26 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Les vaches c’est moins mignon…
27 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais c’est plus pratique
28 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
On peut les rentabiliser
29 | Présentation Docker
Philosophie / Fonctionnement
Montée en charge / déploiements
Mais il faut apprendre
à gérer le troupeau
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 | 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 | 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 | 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 | 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
35 | Présentation Docker
Philosophie / Fonctionnement
Architecture pour SwissLife
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 | 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
38 | Présentation Docker
Ecosystème
Clustering
•Idée pour prochain midi technique…
Exemple:
• Kubernetes (Google)
• Docker Swarm (Docker)
• Openshift Origin (Red Hat)
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 | 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 | 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
42 | Présentation Docker
Demo avec du Tomcat et Docker Compose
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 ?)

Midi technique - présentation docker

  • 1.
    1 | PrésentationDocker 26/01/16 CONSTRUIRE, DEPLOYER EXÉCUTER VOS APPLICATIONS PARTOUT!
  • 2.
    2 | PrésentationDocker Agenda • Qu'est ce que Docker ? • Core Concepts • Demo: création de notre 1ère image (Introduction Dockerfile) • Philosophie / Fonctionnement • Ecosystème • Avantages / Inconvénients • Demo avec du Tomcat • Retour d’expérience 3SI
  • 3.
    3 | PrésentationDocker Qu'est ce que Docker ?
  • 4.
    4 | PrésentationDocker Qu'est ce que Docker ? Le tableau infernal du déploiement
  • 5.
    5 | PrésentationDocker Qu'est ce que Docker ? Le tableau infernal du transport
  • 6.
    6 | PrésentationDocker Qu'est ce que Docker ? La solution pour le transport
  • 7.
    7 | PrésentationDocker Qu'est ce que Docker ? Le tableau devient limpide
  • 8.
    8 | PrésentationDocker Qu'est ce que Docker ? La solution pour le déploiement
  • 9.
    9 | PrésentationDocker Qu'est ce que Docker ? Le tableau devient limpide ici aussi
  • 10.
    10 | PrésentationDocker Qu'est ce que Docker ? Définition “Build, Ship and Run Any App, Anywhere”
  • 11.
    11 | PrésentationDocker 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ésentationDocker 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ésentationDocker 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ésentationDocker Core Concepts - LXC à Permet d'isoler l'exécution des applications dans des contexte d'éxécution (VE). “Chroot on steroids”
  • 15.
    15 | PrésentationDocker 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ésentationDocker 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ésentationDocker 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ésentationDocker 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ésentationDocker Demo – Création de notre 1ère image avec Dockerfile – Introduction aux commandes de base
  • 20.
    20 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Chats vs bétail
  • 21.
    21 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Des chats
  • 22.
    22 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Un chat c’est mignon
  • 23.
    23 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Mais cela coûte cher
  • 24.
    24 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Et grossir très (trop ?) vite
  • 25.
    25 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Des vaches
  • 26.
    26 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Les vaches c’est moins mignon…
  • 27.
    27 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Mais c’est plus pratique
  • 28.
    28 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements On peut les rentabiliser
  • 29.
    29 | PrésentationDocker Philosophie / Fonctionnement Montée en charge / déploiements Mais il faut apprendre à gérer le troupeau
  • 30.
    30 | PrésentationDocker 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ésentationDocker “ 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ésentationDocker 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ésentationDocker 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ésentationDocker 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
  • 35.
    35 | PrésentationDocker Philosophie / Fonctionnement Architecture pour SwissLife
  • 36.
    36 | PrésentationDocker 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ésentationDocker Ecosystème Docker Hub •Un très grand nombre d’images disponibles (> 200 000) •Images Officielles •Autres images avec système de notations
  • 38.
    38 | PrésentationDocker Ecosystème Clustering •Idée pour prochain midi technique… Exemple: • Kubernetes (Google) • Docker Swarm (Docker) • Openshift Origin (Red Hat)
  • 39.
    39 | PrésentationDocker 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ésentationDocker 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ésentationDocker 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
  • 42.
    42 | PrésentationDocker Demo avec du Tomcat et Docker Compose
  • 43.
    43 | PrésentationDocker 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 ?)