SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Docker
1
Par : Hocine Boukhatem
22/10/1018
Plan
I. Docker, c’est quoi ?
II. Conteneur vs Machine virtuelle
III. Ecosystème
IV. Sécurité
V. Conclusion
2
Docker, c’est quoi ?
• Fournit une enveloppe uniforme autour
d’un logiciel : «Build, Ship and Run Any
App, Anywhere» [www.docker.com]
• Docker est un outil qui peut empaqueter une application et ses
dépendances dans un conteneur isolé, qui pourra être exécuté sur
n'importe quel serveur [Wikipedia]
3
Docker, c’est quoi ?
• Repose sur LXC (Linux Containers) de Linux (équivalent Windows :
Windows Server Container).
• Repose sur 2 fonctionnalités du noyau linux
• Cgroup : control groups: limiter/délimiter l'utilisation des ressources
• Namespace : Cloisonnement des espaces de nommage : un group ne peux
accéder aux ressources des autres groupes
• « Une VM » extrêmement légère : on peut faire ssh, installer des
packet, avoir acces root, config des lib ..
4
5
Docker, c’est quoi ?
Docker, c’est quoi ?
• Services : WebApps, Backends, SQL, NoSQL …
• Plateformes
• Linux (Ubuntu, Fedora, RHEL, Centos, openSUSE, ...)
• Windows Server
• Cloud (Amazon Web Services, Microsoft Azure, Google
Cloud Platform …)
6
7
Pourquoi utiliser docker
• Le déploiement
• Fiable, rapide et consistant : Un conteneur qui fonctionne sur une machine avec
une distribution X, fonctionnera sur une autre machine avec une distribution Y.
• Pas de gestion de version de package, lib, compilateur etc..
• Force les bonnes pratiques (microservice, documentation ..)
• Le développement
• Avoir le même env de dev qu'en prod, si ça marche quelque part, ça marchera
partout.
• Tester avec plusieurs versions d'un même logiciel sur la même machine ..
• Compilation/Exécution multi-[os—jvm—tools—...]
• Installer des applications
• Facile et rapide grâce à la multitude d'outils proposés par Docker 8
Pourquoi utiliser docker
Faciliter les tests
• Tests unitaires avec une BDD unique (vérifier le user…) :
si un test ne marche pas les suivants aussi
-> Solution :
• Mettre la BDD dans un conteneur puis lancer plusieurs instances
(FIG)
• Utilisation de conteneurs préchargés avec des data pour les tests
-> Une architecture de test plus agile : chaque container peut
intégrer une brique de l'application
9
Pourquoi utiliser docker
Isolation
• Isoler un processus et ses dépendances :
• Réseau (IP, routage, firewall unique par conteneur)
• Filesystem
• Utilisateurs/groupes
• Contrôle et limitation de la consommation de ressources (CPU, RAM ..)
• Diminution de la surface d’attaque (sécurité accrue)
• Gestion de vulnérabilité : mise à jour d’une des couches, test, ...
10
• La VM a sa propre infrastructure
• Beaucoup de composants pas
forcement indispensables :
Garage, jardin, piscine …
11
Conteneur != VM
• Les appartements se partagent
la même infrastructure
• Plusieurs variétés selon le besoin
: Studio, T2..
12
Conteneur != VM
13
Conteneur != VM
VM Docker
Un OS complet avec ses lib, pilotes..
Indiquer la ram à utiliser, le nombre de
CPU, disque dur virtuel ...
Le minimum nécessaire, pas d’OS, mais un
rootfs (le /) qui contient les bibliothèques
et les binaires nécessaires.
Migration relativement lente Plus facile à migrer, à sauvegarder..
VM provisionnée en secondes/minutes Se lance en millisecondes
Beaucoup de couches : perte de
performance : entre natif et virtualisé,
même si hyperviseur performant (xen..)
Densité plus élevé que les VM : Possibilité
d’héberger beaucoup plus de conteneurs
Combiner VM & Docker
14
Dois je me débarrasser des VM ?
• Non , ou pas encore
• Pas mal d'application pour lesquelles ça n’a pas de sens d'utiliser des
conteneurs : contraintes de sécurité, d'isolation..
• Utiliser des Dockers si le gain de performance est justifiable et
important, (si 10k VM avec 5% )
• Docker n'est pas cross-platform. On lance des conteneurs Linux sous
Linux, des conteneurs Windows sous Windows.
15
Ecosystème
• Docker Engine
• Docker Hub
• DockerFile
• Docker Image
• Docker Compose
• Docker Swarm
16
Docker Engine
• Gestion de l’interaction des conteneurs avec l’OS
• Gestion des privilèges et des ressources : Plusieurs niveaux
d’imbrication : lancer docker-in-docker voire VM-in-docker…
• Hyperviseur de conteneurs
• Local host ou serveur distant
• Construire des images de conteneurs et les partager grâce a la
repository (run commit)
17
Docker Engine
• Scalabilité
• L’accessibilité des conteneurs par les API
• La portabilité : migration à chaud ou à froid
• Simulation d’OS différents de l’OS hôte
• Serveur X dans conteneur : desktop complet dans conteneur
18
Docker Hub
• Ensemble de services sur le cloud
• Registres publiques/privés d’images Docker
• Si on choisi Debian : il va appeler docker hub : énorme bibliothèque :
télécharger Debian en local
19
20
• Créer une image docker étape par étape : build
• Peut être versionné dans un système tel que Git ou SVN
• Docker Hub peut automatiquement créer des images basées sur des
DockerFiles sur Github.
DockerFile
• Une image Docker : le système de fichiers, sans les processus : Un
conteneur dans un état inerte.
• Créées à partir de fichiers de configuration, nommés “Dockerfile”
• Persistance des données
21
Docker Image
22
23
• Permet de “composer” un ensemble de container sur une seule et
même machine, mais également de “scaler” les containers toujours sur
un même serveur
24
Docker Compose
• Comment orchestrer un ensemble de containers non plus sur un seul
serveur, mais répartis sur plusieurs serveurs ?
25
Docker Swarm
26
Sécurité
• La configuration par défaut n’est pas suffisante
• Créer une partition séparée pour Docker :
/var/lib/docker : Une image pourrait volontairement occuper tout
l’espace du système hôte -> Créer une partition logique ou physique
• Interdire les communications entre les containers : Possible par défaut.
Une mauvaise image pourrait donc faire du sniffing sur le sous-réseau
Docker
27
Sécurité
• Ne pas utiliser n’importe quel registre
• Ne mapper que les ports utiles
• Ne pas utiliser privileged pour n’importe quel image : Accès
à tous les droits, dont le lancement de nouveaux container
• Créer un utilisateur dans votre Dockerfile pour ne pas utiliser
root
28
29
Docker as a Service
30
Merci !
31
Contact
hocine.boukhatem@gmail.com

Contenu connexe

Tendances

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 ConfigurationAlphorm
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」についてYuya Ohara
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An IntroductionPOSSCON
 
Introduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGIntroduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGAjeet Singh Raina
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...Edureka!
 
Kubernetes
KubernetesKubernetes
Kuberneteserialc_w
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introductionDAEBUM LEE
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetesJulien Maitrehenry
 
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 AdministrationAlphorm
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?Akihiro Suda
 
Container Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesContainer Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesWill Hall
 
Docker intro
Docker introDocker intro
Docker introOleg Z
 

Tendances (20)

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
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Docker
DockerDocker
Docker
 
”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Docker & Kubernetes intro
Docker & Kubernetes introDocker & Kubernetes intro
Docker & Kubernetes intro
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An Introduction
 
Introduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGIntroduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUG
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Jenkins
JenkinsJenkins
Jenkins
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
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
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
 
Container Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesContainer Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and Kubernetes
 
Docker intro
Docker introDocker intro
Docker intro
 

Similaire à 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.pptxAbdellahELMAMOUN
 
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 informatiquesdenier
 
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...TelecomValley
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
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.pptxAnisSalhi3
 
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
 
A la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieSamuel Desseaux
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerNizar GARRACHE
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
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.pdfqsdqsd4
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueAZUG FR
 
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é
 
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, ...adri1s
 
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 AzureVincent Thavonekham-Pro
 
DevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applicationsDevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applicationsCellenza
 
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-nantesChristophe Furmaniak
 
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 partieSamuel Desseaux
 

Similaire à What is Docker (20)

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
 
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
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
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...
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
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
 
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, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partie
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
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
 
Prise en main de Docker
Prise en main de DockerPrise en main de Docker
Prise en main de Docker
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
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...
 
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, ...
 
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
 
DevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applicationsDevCon 3 : Containérisation d’applications
DevCon 3 : Containérisation d’applications
 
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
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
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
 

What is Docker

  • 1. Docker 1 Par : Hocine Boukhatem 22/10/1018
  • 2. Plan I. Docker, c’est quoi ? II. Conteneur vs Machine virtuelle III. Ecosystème IV. Sécurité V. Conclusion 2
  • 3. Docker, c’est quoi ? • Fournit une enveloppe uniforme autour d’un logiciel : «Build, Ship and Run Any App, Anywhere» [www.docker.com] • Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur [Wikipedia] 3
  • 4. Docker, c’est quoi ? • Repose sur LXC (Linux Containers) de Linux (équivalent Windows : Windows Server Container). • Repose sur 2 fonctionnalités du noyau linux • Cgroup : control groups: limiter/délimiter l'utilisation des ressources • Namespace : Cloisonnement des espaces de nommage : un group ne peux accéder aux ressources des autres groupes • « Une VM » extrêmement légère : on peut faire ssh, installer des packet, avoir acces root, config des lib .. 4
  • 6. Docker, c’est quoi ? • Services : WebApps, Backends, SQL, NoSQL … • Plateformes • Linux (Ubuntu, Fedora, RHEL, Centos, openSUSE, ...) • Windows Server • Cloud (Amazon Web Services, Microsoft Azure, Google Cloud Platform …) 6
  • 7. 7
  • 8. Pourquoi utiliser docker • Le déploiement • Fiable, rapide et consistant : Un conteneur qui fonctionne sur une machine avec une distribution X, fonctionnera sur une autre machine avec une distribution Y. • Pas de gestion de version de package, lib, compilateur etc.. • Force les bonnes pratiques (microservice, documentation ..) • Le développement • Avoir le même env de dev qu'en prod, si ça marche quelque part, ça marchera partout. • Tester avec plusieurs versions d'un même logiciel sur la même machine .. • Compilation/Exécution multi-[os—jvm—tools—...] • Installer des applications • Facile et rapide grâce à la multitude d'outils proposés par Docker 8
  • 9. Pourquoi utiliser docker Faciliter les tests • Tests unitaires avec une BDD unique (vérifier le user…) : si un test ne marche pas les suivants aussi -> Solution : • Mettre la BDD dans un conteneur puis lancer plusieurs instances (FIG) • Utilisation de conteneurs préchargés avec des data pour les tests -> Une architecture de test plus agile : chaque container peut intégrer une brique de l'application 9
  • 10. Pourquoi utiliser docker Isolation • Isoler un processus et ses dépendances : • Réseau (IP, routage, firewall unique par conteneur) • Filesystem • Utilisateurs/groupes • Contrôle et limitation de la consommation de ressources (CPU, RAM ..) • Diminution de la surface d’attaque (sécurité accrue) • Gestion de vulnérabilité : mise à jour d’une des couches, test, ... 10
  • 11. • La VM a sa propre infrastructure • Beaucoup de composants pas forcement indispensables : Garage, jardin, piscine … 11 Conteneur != VM • Les appartements se partagent la même infrastructure • Plusieurs variétés selon le besoin : Studio, T2..
  • 13. 13 Conteneur != VM VM Docker Un OS complet avec ses lib, pilotes.. Indiquer la ram à utiliser, le nombre de CPU, disque dur virtuel ... Le minimum nécessaire, pas d’OS, mais un rootfs (le /) qui contient les bibliothèques et les binaires nécessaires. Migration relativement lente Plus facile à migrer, à sauvegarder.. VM provisionnée en secondes/minutes Se lance en millisecondes Beaucoup de couches : perte de performance : entre natif et virtualisé, même si hyperviseur performant (xen..) Densité plus élevé que les VM : Possibilité d’héberger beaucoup plus de conteneurs
  • 14. Combiner VM & Docker 14
  • 15. Dois je me débarrasser des VM ? • Non , ou pas encore • Pas mal d'application pour lesquelles ça n’a pas de sens d'utiliser des conteneurs : contraintes de sécurité, d'isolation.. • Utiliser des Dockers si le gain de performance est justifiable et important, (si 10k VM avec 5% ) • Docker n'est pas cross-platform. On lance des conteneurs Linux sous Linux, des conteneurs Windows sous Windows. 15
  • 16. Ecosystème • Docker Engine • Docker Hub • DockerFile • Docker Image • Docker Compose • Docker Swarm 16
  • 17. Docker Engine • Gestion de l’interaction des conteneurs avec l’OS • Gestion des privilèges et des ressources : Plusieurs niveaux d’imbrication : lancer docker-in-docker voire VM-in-docker… • Hyperviseur de conteneurs • Local host ou serveur distant • Construire des images de conteneurs et les partager grâce a la repository (run commit) 17
  • 18. Docker Engine • Scalabilité • L’accessibilité des conteneurs par les API • La portabilité : migration à chaud ou à froid • Simulation d’OS différents de l’OS hôte • Serveur X dans conteneur : desktop complet dans conteneur 18
  • 19. Docker Hub • Ensemble de services sur le cloud • Registres publiques/privés d’images Docker • Si on choisi Debian : il va appeler docker hub : énorme bibliothèque : télécharger Debian en local 19
  • 20. 20 • Créer une image docker étape par étape : build • Peut être versionné dans un système tel que Git ou SVN • Docker Hub peut automatiquement créer des images basées sur des DockerFiles sur Github. DockerFile
  • 21. • Une image Docker : le système de fichiers, sans les processus : Un conteneur dans un état inerte. • Créées à partir de fichiers de configuration, nommés “Dockerfile” • Persistance des données 21 Docker Image
  • 22. 22
  • 23. 23
  • 24. • Permet de “composer” un ensemble de container sur une seule et même machine, mais également de “scaler” les containers toujours sur un même serveur 24 Docker Compose
  • 25. • Comment orchestrer un ensemble de containers non plus sur un seul serveur, mais répartis sur plusieurs serveurs ? 25 Docker Swarm
  • 26. 26
  • 27. Sécurité • La configuration par défaut n’est pas suffisante • Créer une partition séparée pour Docker : /var/lib/docker : Une image pourrait volontairement occuper tout l’espace du système hôte -> Créer une partition logique ou physique • Interdire les communications entre les containers : Possible par défaut. Une mauvaise image pourrait donc faire du sniffing sur le sous-réseau Docker 27
  • 28. Sécurité • Ne pas utiliser n’importe quel registre • Ne mapper que les ports utiles • Ne pas utiliser privileged pour n’importe quel image : Accès à tous les droits, dont le lancement de nouveaux container • Créer un utilisateur dans votre Dockerfile pour ne pas utiliser root 28
  • 29. 29
  • 30. Docker as a Service 30