SlideShare une entreprise Scribd logo
TRACK DEVOPS
DOCKER
Quels enjeux côté stockage et réseau?
Présentations
Hervé Leclerc (@hleclerc)
- CTO Alter Way
( Agnostique )
- Depuis 2006 chez Alter Way ntégrateur
100% Open Source ( Offre d’hébergement
basé sur Docker)
- Nuages de tags dans l’ordre préférence :
Docker, Ansible, Rancher, CI, Automatisation,
Industrialisation, Prometheus, Grafana, KVM
Jérôme Petazzoni (@jpetazzo)
- Sysadmin, développeur, évangéliste
(they told me I could be anything!)
- Chez Docker Inc. depuis bientôt 5 ans
(depuis l’époque dotCloud)
- Nuage de tags dans le désordre:
Docker, LXC, OpenVZ, Vserver, ØMQ, Solaris,
PaaS, Django, PostGIS, Plone, Asterisk, Zebra,
KVM, Xen, Golang...
3
- Pourquoi parler de stockage et réseau ?
- Différences techniques entre VMs et containers
- Le stockage (dans des VMs, dans des containers)
- Le réseau (dans des VMs, dans des containers)
- Conclusions
Plan de bataille
4
Pourquoi en parler ?
Stockage, réseau
5
Virtualiser le processeur et la mémoire, c’est (relativement) facile.
Virtualiser le stockage et le réseau, c’est plus difficile, car :
- plusieurs composants doivent communiquer ensemble
(toujours pour le réseau, parfois pour le stockage)
- les défaillances peuvent être critiques
(perte de données, indisponibilité massive)
Notre environnement virtuel devient un système distribué. (Argh.)
Quelques rappels
6
Différences techniques
VMs et containers
7
- Ressemble à une machine physique
- séquence de boot
- noyau
- drivers
- SSH, cron, init ...
- Exécute du code pour un processeur donné
(généralement x86_64, mais pas que)
- Communique avec l’extérieur via des périphériques virtuels
(virtio chez les gens civilisés)
Machine virtuelle ...
8
- N’essaie pas de ressembler à une machine physique
- pas de boot, pas de noyau, pas de drivers
- pas de SSH, pas de cron, pas de systemd, pas de problème
- Se contente de faire tourner des processus
(qui tournent sur le noyau hôte comme des processus ordinaires)
- Exécute du code pour un processeur donné
(généralement x86_64, mais pas que)
- Communique avec l’extérieur via des appels système
(comme n’importe quel processus ordinaire)
Container ...
9
- N’essaie pas de ressembler à un ordinateur
- pas de noyau, pas de périphériques …
- juste une application Java !
- Exécute du bytecode Java
- Communique avec l’extérieur via l’API Java
Analogie : une JVM ...
10
Combien de containers peut-on mettre sur un Raspberry Pi 2?
2499 (dans 1 Go de RAM)
2740 (en patchant Docker)
Densité : containers > VMs
11
Processus dans un container = processus tout à fait ordinaire
Dans un container:
- pas d’émulation matérielle
- chemins critiques identiques pour les entrées/sorties
- performances identiques
Performances identiques, qu’on soit dans un container ou pas
(À condition d’utiliser les bons paramétrages)
Performances : containers > VMs
12
La surface d’attaque est beaucoup plus petite :
- VM → hyperviseur = hypercalls
(bien délimités ; ~40 pour Xen)
- container → noyau = syscalls
(plus de 300 ; certains sont corsés, e.g. ioctl, splice/tee/vmsplice ...)
Sortir d’une VM est plus difficile que sortir d’un container
(mais c’est loin d’être impossible)
La communication entre VMs se fait via le réseau
Isolation : VMs > containers
13
Des containers peuvent partager, sans aucun overhead :
- des fichiers et répertoires
- des sockets UNIX
- des segments de mémoire
Des containers peuvent avoir la même pile réseau
(interfaces réseau, routes, règles iptables, sockets ouvertes, etc.)
Ceci permet une meilleure séparation des tâches opérationelles
Communications : containers > VMs
14
Un container peut se concentrer sur l’essentiel (l’application)
Les tâches “ops” sont fournies par le runtime ou par d’autres containers :
- logs
- backups
- supervision
- connexion au réseau
- service discovery
- load balancing
Séparation des tâches opérationnelles
15
Stockage
16
Deux écoles (deux églises?) :
- stockage local
(accessible uniquement par l’hyperviseur)
- stockage réseau
(accessible par plusieurs hyperviseurs)
Dans le monde des VMs
17
Disques locaux, “ephemeral storage”, “instance store” ...
Avantages :
- Simple, pas d’intermédiaire
- Performances faciles à maîtriser
- Pas de SPOF (autre que l’hyperviseur lui-même)
Inconvénients :
- Migrations pénibles (puisqu’il faut déplacer les données)
- L’hyperviseur est un SPOF
Stockage local
18
SAN, NAS, Ceph, Gluster, EBS, EFS …
Avantages :
- Migrations faciles (les données ne bougent pas)
- L’hyperviseur n’est plus un SPOF (pour l’accès aux données)
Inconvénients :
- L’unité de stockage reste un SPOF (sauf redondance active…)
- Le réseau peut devenir un problème (disponibilité, performances)
- Vous avez plein de nouveaux voisins ! (ibid.)
Stockage réseau
19
Bryan Cantrill:
“Network storage embodies a key design issue in architecting and operating a cloud:
The tension between economies of scale and overconsolidation of risk.”
https://www.joyent.com/blog/network-storage-in-the-cloud-delicious-but-deadly/
Richard Kiene:
“Try as they may to be redundant, OpenStack and Ceph architecturally force
non-obvious single points of failure [...] when used for virtual machine storage.
— SATApocalypse, https://ops.faithlife.com/?p=6
A méditer
20
- Les données doivent bien résider quelque part
(merci Captain Obvious!)
- Alors, stockage local ou réseau ?
- On peut (facilement) combiner les deux
Dans le monde des containers
21
Il n’y a aucun intérêt à mettre les choses suivantes sur le réseau :
- Système d’exploitation
- avec Docker, le système est réduit à sa plus simple expression
- il peut être identique sur un parc hétérogène (comme un hyperviseur)
- Images de containers
- en production, elles proviennent toujours d’une registry
- Fichiers temporaires
Si on met tout ça de côté, que reste-t-il ?
Stockage local
22
Concept Docker indiquant un répertoire partagé :
- entre un container et l’hôte
- entre plusieurs containers
- contenant des données “précieuses”
Exemple:
docker run -v /mnt/db01:/var/lib/mysql mysql
Volumes
23
Deux containers peuvent partager un répertoire.
Par exemple, pour des logs :
docker run --name webapp -v /logs jerome/webapp
Mon application web est configurée pour écrire ses logs dans /logs
docker run --volumes-from webapp jerome/logcollector
Cet autre container va “aspirer” les fichiers dans /logs et les envoyer ailleurs (ELK, Splunk…)
Volumes locaux (partage)
24
Les volumes permettent de migrer instantanément les données d’un container à l’
autre :
docker run --name monjoliredis redis:2.8
L’image redis spécifie que “/var/lib/redis” (qui contient les données) doit être placé sur un volume.
docker stop monjoliredis
docker run --volumes-from monjoliredis redis:3.0
Ce nouveau container va “hériter” du volume /var/lib/redis de l’ancien, et des données qu’il contient.
Volumes locaux (migration)
25
Vous vous rappelez notre premier exemple ?
docker run -v /mnt/db01:/var/lib/mysql mysql
Imaginons que “db01” est le nom d’un volume réseau (SAN ou autre…)
docker run -v db01:/var/lib/mysql mysql
Ça serait pratique si Docker pouvait le monter pour nous, au bon endroit,
automatiquement, pas vrai ?
Volumes distants
26
DEMO #1
Sur le premier Host Docker :
docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c1 ubuntu /bin/bash
docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c2 ubuntu /bin/bash
Vérification / Modification / Création / Suppression d’un fichier
Partage d’information entre container sur un système de fichier distant
DEMO #2
Sur le premier Host Docker :
docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c1 ubuntu /bin/bash
Sur le deuxième Host Docker :
docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c2 ubuntu /bin/bash
Vérification / Modification / Création / Suppression d’un fichier
Partage d’information entre containers sur hosts distincts sur un système de fichier distant
Volumes distants
27
Les volumes Docker sont maintenant des objets “de première classe”.
Un volume peut être créé indépendamment d’un container :
docker volume create --driver=xxx --name=yyy
Le volume sera mis a disposition (monté) par le driver.
Quelques drivers: Convoy, Flocker, Gluster, Keywhiz, PFS...
Récapitulatif
28
Réseau
29
Plusieurs approches pour les services accessibles de l’extérieur :
- Adressage public sans fioritures
- Adressage public avec interfaces ou adresses flottantes
- Adressage interne + NAT + filtrage maison
Il faut souvent ajouter un load balancer opéré par le fournisseur.
(À ma connaissance, aucun cloud ne permet de faire tourner son propre load balancer dans des conditions de disponibilité
satisfaisantes, c’est-à-dire sans dépendre de l’API de l’opérateur pour effectuer le fail over)
Dans le monde des VMs
30
Là aussi, plusieurs approches :
- Rien du tout (utiliser les adresses et interfaces externes)
- Réseau interne partagé niveau 3
- Réseau privé niveau 3
- Réseau privé niveau 2
Dans le monde des VMs (traffic interne)
31
Plein de technos :
- VLAN
- QinQ
- TRILL
- VNI, VNT
- MPLS, VPLS
- VXLAN
- OSPF, IS-IS
- BGP
Dans le monde des VMs (coté opérateur)
32
Solution de facilité : une adresse IP publique par container
Ça aurait marché en 2003 …
Mais Docker est sorti en 2013 (un peu tard)
On doit donc faire face à un léger problème
Dans le monde des containers
33
34
Solution (évidente) au problème
35
Première solution (plus réaliste)
36
Avantages :
- marche partout (pas de nouveau protocole, équipement, etc.)
Inconvénients :
- performances (iptables, bridge …)
- nécessité de spécifier hôte+port (au lieu de l’hôte seul)
- le DNS ne suffit plus
- problématique pour certains systèmes distribués
(qui ont besoin de plages de ports et/ou de connaître leur adresse IP)
Port Mapping
37
Deuxième solution (plus sophistiquée)
38
Deuxième solution (plus sophistiquée)
39
Des drivers fournissent des réseaux
Ces réseaux peuvent être :
- locaux à une machine (e.g.: le bridge actuel)
- globaux (e.g.: overlay)
À chaque réseau est associé une plage d’adresses IP
Les réseaux globaux s’appuient typiquement sur un mécanisme distribué pour
enregistrer et découvrir les réseaux, ainsi qu’allouer les adresses IP
Container Network Model
40
(dans le cadre de la demo)
b skynet skynet skynetbh h h
c1 c2 c3
ping c2
ping c3.skynet
docker run --ti -d --net=skynet alpine
Mettre en oeuvre le réseau Overlay avec Docker
41
#1
(d1) docker run -ti -d --name=A1 alpine /bin/sh
(d1) docker run -ti -d --name=A2 alpine /bin/sh
(d1) inspect --format '{{ .NetworkSettings.IPAddress }}' A1
(d1) inspect --format '{{ .NetworkSettings.IPAddress }}' A2
(d1) docker attach A2
(d1) cat /etc/hosts # (on note qu’il n’y a pas de mise à jour du fichier)
(d1) ping [IP de A1]
------------------------------------------------------------------------------------------------------------------------------------------------------------------
(d1) docker network create d1net
(d1) docker run -ti -d --name=B1 --net=d1net alpine /bin/sh
(d1) docker run -ti -d --name=B2 --net=d1net alpine /bin/sh
(d1) docker attach B2
(d1) cat /etc/hosts # (on note qu’il n’y a une mise à jour du fichier avec b1 et b1.d1.net)
(d1) ping [IP de A1] (pas de réponse)
(d1) ping B1.d1net (ping OK) # Attention les casse est importante avec alpine :(
------------------------------------------------------------------------------------------------------------------------------------------------------------------
(d1) docker network create -d overlay skynet
(d2) docker network ls
(d1) docker run -ti -d --name=C1 --net=skynet alpine /bin/sh
(d2) docker run -ti -d --name=C2 --net=skynet alpine /bin/sh
(d2) docker attach C2
(d2) cat /etc/hosts # (on note qu’il n’y a une mise à jour du fichier avec C1 et C1.skynet)
(d2) ping [IP de A1] (pas de réponse)
(d2) ping B1.d1net (pas de réponse)
(d2) ping C1.skynet (ping ok)
A1 A2
d1netB1 B2
skynet
C1
C2
Docket Host #1
Docket Host #2
Deux exemples d’utilisation de la libnetwork
42
Orchestrer le déploiement et l’utilisation d’une stack lamp
skynet
http
Docker #1
Docker #2
mysql
php-fpm
NFS
GlusterFS
EC2...
/var/www
/var/lib/mysql
80
bridge
#2Deux exemples d’utilisation de la libnetwork
43
Conclusions
44
Développeur :
- je fabrique un container pour mon application
- je ne m’occupe pas du stockage, du réseau, etc.
Opérateur :
- je lance des containers
- je n’ai pas besoin de les modifier
- j’effectue la “plomberie” stockage, réseau, de manière transparente
Docker + volume plugins + network drivers = ♥
Séparations des tâches
45
Merci !
Questions ?
@jpetazzo
@hleclerc
https://github.com/
herveleclerc/poss-demo-ping.git
https://github.com/
herveleclerc/poss-demo-libnetwork
https://github.com/herveleclerc/
poss-demo-lamp-netw.git
46

Contenu connexe

Tendances

Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
Nicolas Muller
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Silicon Comté
 
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
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
Colin LEVERGER
 
Intro docker
Intro dockerIntro docker
Intro docker
Fedir RYKHTIK
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
Zenika
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
Thibaut Marmin
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
ALTER WAY
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Cédric Leblond
 
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
SmartnSkilled
 
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 ?
Membré Guillaume
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
Oxalide
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Fabien Arcellier
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
Romain Chalumeau
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Silicon Comté
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016
Julia Mateo
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
Christophe Furmaniak
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Alexis Ducastel
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
Jean-Baptiste Claramonte
 

Tendances (20)

Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
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
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Intro docker
Intro dockerIntro docker
Intro docker
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
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
 
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 ?
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 

En vedette

Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Jérôme Petazzoni
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
Jérôme Petazzoni
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Jérôme Petazzoni
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Jérôme Petazzoni
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
Jérôme Petazzoni
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
Jérôme Petazzoni
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Jérôme Petazzoni
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Jérôme Petazzoni
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
Jérôme Petazzoni
 
How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)
Jérôme Petazzoni
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical Presentation
Jérôme Petazzoni
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Jérôme Petazzoni
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
Jérôme Petazzoni
 
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
Jérôme Petazzoni
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
Jérôme Petazzoni
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
Jérôme Petazzoni
 
Why Docker
Why DockerWhy Docker
Why Docker
dotCloud
 
GRID-технологии в физическом эксперименте (Введение)
GRID-технологии в физическом эксперименте (Введение)GRID-технологии в физическом эксперименте (Введение)
GRID-технологии в физическом эксперименте (Введение)
Dmitry Spodarets
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux Containers
Jignesh Shah
 

En vedette (20)

Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
 
Orchestration for the rest of us
Orchestration for the rest of usOrchestration for the rest of us
Orchestration for the rest of us
 
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
 
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
 
How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)How to contribute to large open source projects like Docker (LinuxCon 2015)
How to contribute to large open source projects like Docker (LinuxCon 2015)
 
Docker Non Technical Presentation
Docker Non Technical PresentationDocker Non Technical Presentation
Docker Non Technical Presentation
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
 
Docker: automation for the rest of us
Docker: automation for the rest of usDocker: automation for the rest of us
Docker: automation for the rest of us
 
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Why Docker
Why DockerWhy Docker
Why Docker
 
GRID-технологии в физическом эксперименте (Введение)
GRID-технологии в физическом эксперименте (Введение)GRID-технологии в физическом эксперименте (Введение)
GRID-технологии в физическом эксперименте (Введение)
 
Spodarets Pereslavl 2009
Spodarets Pereslavl 2009Spodarets Pereslavl 2009
Spodarets Pereslavl 2009
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux Containers
 

Similaire à Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit 2015

Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
Christophe Furmaniak
 
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
AbdellahELMAMOUN
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
Noël Bardelot
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Aurelien Navarre
 
formation docker.pdf
formation docker.pdfformation docker.pdf
formation docker.pdf
MohammedHdi1
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
Olivier Eeckhoutte
 
Docker
DockerDocker
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU Linux
Thierry Gayet
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
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 ?
Julien Maitrehenry
 
Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
Christophe Villeneuve
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
Christophe Villeneuve
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
Xavier MARIN
 
Docker & son ecosystème
Docker & son ecosystèmeDocker & son ecosystème
Docker & son ecosystème
Aymen EL Amri
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
GhofraneFerchichi2
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
Jaouad Assabbour
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Publicis Sapient Engineering
 
A la découverte de docker, 1ère partie
A la découverte de docker, 1ère partieA la découverte de docker, 1ère partie
A la découverte de docker, 1ère partie
Samuel Desseaux
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
AbdellahELMAMOUN
 

Similaire à Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit 2015 (20)

Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
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
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
formation docker.pdf
formation docker.pdfformation docker.pdf
formation docker.pdf
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Docker
DockerDocker
Docker
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU Linux
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
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 ?
 
Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Docker & son ecosystème
Docker & son ecosystèmeDocker & son ecosystème
Docker & son ecosystème
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 
A la découverte de docker, 1ère partie
A la découverte de docker, 1ère partieA la découverte de docker, 1ère partie
A la découverte de docker, 1ère partie
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Ocs
OcsOcs
Ocs
 

Plus de Jérôme Petazzoni

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...
Jérôme Petazzoni
 
Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)
Jérôme Petazzoni
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015
Jérôme Petazzoni
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deployment
Jérôme Petazzoni
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
Jérôme Petazzoni
 
Pipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and DockerPipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and Docker
Jérôme Petazzoni
 
Docker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing MeetupDocker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing Meetup
Jérôme Petazzoni
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange County
Jérôme Petazzoni
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
Jérôme Petazzoni
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
Jérôme Petazzoni
 
Killer Bugs From Outer Space
Killer Bugs From Outer SpaceKiller Bugs From Outer Space
Killer Bugs From Outer Space
Jérôme Petazzoni
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
Jérôme Petazzoni
 
Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?
Jérôme Petazzoni
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Jérôme Petazzoni
 

Plus de Jérôme Petazzoni (14)

Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...Use the Source or Join the Dark Side: differences between Docker Community an...
Use the Source or Join the Dark Side: differences between Docker Community an...
 
Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)Microservices. Microservices everywhere! (At OSCON 2015)
Microservices. Microservices everywhere! (At OSCON 2015)
 
Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015Deploy microservices in containers with Docker and friends - KCDC2015
Deploy microservices in containers with Docker and friends - KCDC2015
 
The Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deploymentThe Docker ecosystem and the future of application deployment
The Docker ecosystem and the future of application deployment
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
 
Pipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and DockerPipework: Software-Defined Network for Containers and Docker
Pipework: Software-Defined Network for Containers and Docker
 
Docker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing MeetupDocker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing Meetup
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange County
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
 
Killer Bugs From Outer Space
Killer Bugs From Outer SpaceKiller Bugs From Outer Space
Killer Bugs From Outer Space
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
 
Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers, and Security: Does It Add Up?
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 

Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit 2015

  • 2. DOCKER Quels enjeux côté stockage et réseau?
  • 3. Présentations Hervé Leclerc (@hleclerc) - CTO Alter Way ( Agnostique ) - Depuis 2006 chez Alter Way ntégrateur 100% Open Source ( Offre d’hébergement basé sur Docker) - Nuages de tags dans l’ordre préférence : Docker, Ansible, Rancher, CI, Automatisation, Industrialisation, Prometheus, Grafana, KVM Jérôme Petazzoni (@jpetazzo) - Sysadmin, développeur, évangéliste (they told me I could be anything!) - Chez Docker Inc. depuis bientôt 5 ans (depuis l’époque dotCloud) - Nuage de tags dans le désordre: Docker, LXC, OpenVZ, Vserver, ØMQ, Solaris, PaaS, Django, PostGIS, Plone, Asterisk, Zebra, KVM, Xen, Golang... 3
  • 4. - Pourquoi parler de stockage et réseau ? - Différences techniques entre VMs et containers - Le stockage (dans des VMs, dans des containers) - Le réseau (dans des VMs, dans des containers) - Conclusions Plan de bataille 4
  • 5. Pourquoi en parler ? Stockage, réseau 5
  • 6. Virtualiser le processeur et la mémoire, c’est (relativement) facile. Virtualiser le stockage et le réseau, c’est plus difficile, car : - plusieurs composants doivent communiquer ensemble (toujours pour le réseau, parfois pour le stockage) - les défaillances peuvent être critiques (perte de données, indisponibilité massive) Notre environnement virtuel devient un système distribué. (Argh.) Quelques rappels 6
  • 8. - Ressemble à une machine physique - séquence de boot - noyau - drivers - SSH, cron, init ... - Exécute du code pour un processeur donné (généralement x86_64, mais pas que) - Communique avec l’extérieur via des périphériques virtuels (virtio chez les gens civilisés) Machine virtuelle ... 8
  • 9. - N’essaie pas de ressembler à une machine physique - pas de boot, pas de noyau, pas de drivers - pas de SSH, pas de cron, pas de systemd, pas de problème - Se contente de faire tourner des processus (qui tournent sur le noyau hôte comme des processus ordinaires) - Exécute du code pour un processeur donné (généralement x86_64, mais pas que) - Communique avec l’extérieur via des appels système (comme n’importe quel processus ordinaire) Container ... 9
  • 10. - N’essaie pas de ressembler à un ordinateur - pas de noyau, pas de périphériques … - juste une application Java ! - Exécute du bytecode Java - Communique avec l’extérieur via l’API Java Analogie : une JVM ... 10
  • 11. Combien de containers peut-on mettre sur un Raspberry Pi 2? 2499 (dans 1 Go de RAM) 2740 (en patchant Docker) Densité : containers > VMs 11
  • 12. Processus dans un container = processus tout à fait ordinaire Dans un container: - pas d’émulation matérielle - chemins critiques identiques pour les entrées/sorties - performances identiques Performances identiques, qu’on soit dans un container ou pas (À condition d’utiliser les bons paramétrages) Performances : containers > VMs 12
  • 13. La surface d’attaque est beaucoup plus petite : - VM → hyperviseur = hypercalls (bien délimités ; ~40 pour Xen) - container → noyau = syscalls (plus de 300 ; certains sont corsés, e.g. ioctl, splice/tee/vmsplice ...) Sortir d’une VM est plus difficile que sortir d’un container (mais c’est loin d’être impossible) La communication entre VMs se fait via le réseau Isolation : VMs > containers 13
  • 14. Des containers peuvent partager, sans aucun overhead : - des fichiers et répertoires - des sockets UNIX - des segments de mémoire Des containers peuvent avoir la même pile réseau (interfaces réseau, routes, règles iptables, sockets ouvertes, etc.) Ceci permet une meilleure séparation des tâches opérationelles Communications : containers > VMs 14
  • 15. Un container peut se concentrer sur l’essentiel (l’application) Les tâches “ops” sont fournies par le runtime ou par d’autres containers : - logs - backups - supervision - connexion au réseau - service discovery - load balancing Séparation des tâches opérationnelles 15
  • 17. Deux écoles (deux églises?) : - stockage local (accessible uniquement par l’hyperviseur) - stockage réseau (accessible par plusieurs hyperviseurs) Dans le monde des VMs 17
  • 18. Disques locaux, “ephemeral storage”, “instance store” ... Avantages : - Simple, pas d’intermédiaire - Performances faciles à maîtriser - Pas de SPOF (autre que l’hyperviseur lui-même) Inconvénients : - Migrations pénibles (puisqu’il faut déplacer les données) - L’hyperviseur est un SPOF Stockage local 18
  • 19. SAN, NAS, Ceph, Gluster, EBS, EFS … Avantages : - Migrations faciles (les données ne bougent pas) - L’hyperviseur n’est plus un SPOF (pour l’accès aux données) Inconvénients : - L’unité de stockage reste un SPOF (sauf redondance active…) - Le réseau peut devenir un problème (disponibilité, performances) - Vous avez plein de nouveaux voisins ! (ibid.) Stockage réseau 19
  • 20. Bryan Cantrill: “Network storage embodies a key design issue in architecting and operating a cloud: The tension between economies of scale and overconsolidation of risk.” https://www.joyent.com/blog/network-storage-in-the-cloud-delicious-but-deadly/ Richard Kiene: “Try as they may to be redundant, OpenStack and Ceph architecturally force non-obvious single points of failure [...] when used for virtual machine storage. — SATApocalypse, https://ops.faithlife.com/?p=6 A méditer 20
  • 21. - Les données doivent bien résider quelque part (merci Captain Obvious!) - Alors, stockage local ou réseau ? - On peut (facilement) combiner les deux Dans le monde des containers 21
  • 22. Il n’y a aucun intérêt à mettre les choses suivantes sur le réseau : - Système d’exploitation - avec Docker, le système est réduit à sa plus simple expression - il peut être identique sur un parc hétérogène (comme un hyperviseur) - Images de containers - en production, elles proviennent toujours d’une registry - Fichiers temporaires Si on met tout ça de côté, que reste-t-il ? Stockage local 22
  • 23. Concept Docker indiquant un répertoire partagé : - entre un container et l’hôte - entre plusieurs containers - contenant des données “précieuses” Exemple: docker run -v /mnt/db01:/var/lib/mysql mysql Volumes 23
  • 24. Deux containers peuvent partager un répertoire. Par exemple, pour des logs : docker run --name webapp -v /logs jerome/webapp Mon application web est configurée pour écrire ses logs dans /logs docker run --volumes-from webapp jerome/logcollector Cet autre container va “aspirer” les fichiers dans /logs et les envoyer ailleurs (ELK, Splunk…) Volumes locaux (partage) 24
  • 25. Les volumes permettent de migrer instantanément les données d’un container à l’ autre : docker run --name monjoliredis redis:2.8 L’image redis spécifie que “/var/lib/redis” (qui contient les données) doit être placé sur un volume. docker stop monjoliredis docker run --volumes-from monjoliredis redis:3.0 Ce nouveau container va “hériter” du volume /var/lib/redis de l’ancien, et des données qu’il contient. Volumes locaux (migration) 25
  • 26. Vous vous rappelez notre premier exemple ? docker run -v /mnt/db01:/var/lib/mysql mysql Imaginons que “db01” est le nom d’un volume réseau (SAN ou autre…) docker run -v db01:/var/lib/mysql mysql Ça serait pratique si Docker pouvait le monter pour nous, au bon endroit, automatiquement, pas vrai ? Volumes distants 26
  • 27. DEMO #1 Sur le premier Host Docker : docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c1 ubuntu /bin/bash docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c2 ubuntu /bin/bash Vérification / Modification / Création / Suppression d’un fichier Partage d’information entre container sur un système de fichier distant DEMO #2 Sur le premier Host Docker : docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c1 ubuntu /bin/bash Sur le deuxième Host Docker : docker run --rm -it --volume-driver=nfs -v gfs2/nfs_volume:/app --name c2 ubuntu /bin/bash Vérification / Modification / Création / Suppression d’un fichier Partage d’information entre containers sur hosts distincts sur un système de fichier distant Volumes distants 27
  • 28. Les volumes Docker sont maintenant des objets “de première classe”. Un volume peut être créé indépendamment d’un container : docker volume create --driver=xxx --name=yyy Le volume sera mis a disposition (monté) par le driver. Quelques drivers: Convoy, Flocker, Gluster, Keywhiz, PFS... Récapitulatif 28
  • 30. Plusieurs approches pour les services accessibles de l’extérieur : - Adressage public sans fioritures - Adressage public avec interfaces ou adresses flottantes - Adressage interne + NAT + filtrage maison Il faut souvent ajouter un load balancer opéré par le fournisseur. (À ma connaissance, aucun cloud ne permet de faire tourner son propre load balancer dans des conditions de disponibilité satisfaisantes, c’est-à-dire sans dépendre de l’API de l’opérateur pour effectuer le fail over) Dans le monde des VMs 30
  • 31. Là aussi, plusieurs approches : - Rien du tout (utiliser les adresses et interfaces externes) - Réseau interne partagé niveau 3 - Réseau privé niveau 3 - Réseau privé niveau 2 Dans le monde des VMs (traffic interne) 31
  • 32. Plein de technos : - VLAN - QinQ - TRILL - VNI, VNT - MPLS, VPLS - VXLAN - OSPF, IS-IS - BGP Dans le monde des VMs (coté opérateur) 32
  • 33. Solution de facilité : une adresse IP publique par container Ça aurait marché en 2003 … Mais Docker est sorti en 2013 (un peu tard) On doit donc faire face à un léger problème Dans le monde des containers 33
  • 34. 34
  • 35. Solution (évidente) au problème 35
  • 36. Première solution (plus réaliste) 36
  • 37. Avantages : - marche partout (pas de nouveau protocole, équipement, etc.) Inconvénients : - performances (iptables, bridge …) - nécessité de spécifier hôte+port (au lieu de l’hôte seul) - le DNS ne suffit plus - problématique pour certains systèmes distribués (qui ont besoin de plages de ports et/ou de connaître leur adresse IP) Port Mapping 37
  • 38. Deuxième solution (plus sophistiquée) 38
  • 39. Deuxième solution (plus sophistiquée) 39
  • 40. Des drivers fournissent des réseaux Ces réseaux peuvent être : - locaux à une machine (e.g.: le bridge actuel) - globaux (e.g.: overlay) À chaque réseau est associé une plage d’adresses IP Les réseaux globaux s’appuient typiquement sur un mécanisme distribué pour enregistrer et découvrir les réseaux, ainsi qu’allouer les adresses IP Container Network Model 40
  • 41. (dans le cadre de la demo) b skynet skynet skynetbh h h c1 c2 c3 ping c2 ping c3.skynet docker run --ti -d --net=skynet alpine Mettre en oeuvre le réseau Overlay avec Docker 41
  • 42. #1 (d1) docker run -ti -d --name=A1 alpine /bin/sh (d1) docker run -ti -d --name=A2 alpine /bin/sh (d1) inspect --format '{{ .NetworkSettings.IPAddress }}' A1 (d1) inspect --format '{{ .NetworkSettings.IPAddress }}' A2 (d1) docker attach A2 (d1) cat /etc/hosts # (on note qu’il n’y a pas de mise à jour du fichier) (d1) ping [IP de A1] ------------------------------------------------------------------------------------------------------------------------------------------------------------------ (d1) docker network create d1net (d1) docker run -ti -d --name=B1 --net=d1net alpine /bin/sh (d1) docker run -ti -d --name=B2 --net=d1net alpine /bin/sh (d1) docker attach B2 (d1) cat /etc/hosts # (on note qu’il n’y a une mise à jour du fichier avec b1 et b1.d1.net) (d1) ping [IP de A1] (pas de réponse) (d1) ping B1.d1net (ping OK) # Attention les casse est importante avec alpine :( ------------------------------------------------------------------------------------------------------------------------------------------------------------------ (d1) docker network create -d overlay skynet (d2) docker network ls (d1) docker run -ti -d --name=C1 --net=skynet alpine /bin/sh (d2) docker run -ti -d --name=C2 --net=skynet alpine /bin/sh (d2) docker attach C2 (d2) cat /etc/hosts # (on note qu’il n’y a une mise à jour du fichier avec C1 et C1.skynet) (d2) ping [IP de A1] (pas de réponse) (d2) ping B1.d1net (pas de réponse) (d2) ping C1.skynet (ping ok) A1 A2 d1netB1 B2 skynet C1 C2 Docket Host #1 Docket Host #2 Deux exemples d’utilisation de la libnetwork 42
  • 43. Orchestrer le déploiement et l’utilisation d’une stack lamp skynet http Docker #1 Docker #2 mysql php-fpm NFS GlusterFS EC2... /var/www /var/lib/mysql 80 bridge #2Deux exemples d’utilisation de la libnetwork 43
  • 45. Développeur : - je fabrique un container pour mon application - je ne m’occupe pas du stockage, du réseau, etc. Opérateur : - je lance des containers - je n’ai pas besoin de les modifier - j’effectue la “plomberie” stockage, réseau, de manière transparente Docker + volume plugins + network drivers = ♥ Séparations des tâches 45