docker run florian/presentation:A4
Docker et le monde des containers logiciels (v2)
Lundi 24 Juin 2019
1
Florian Bobinid $PRESENTER
whoami
A4 - Futur ingénieur systèmes Linux / DevOps
2
FROM C’est quoi Docker ? Son impact dans le monde IT ?
RUN C’est quoi un container logiciel ? Comment ça marche ?
RUN Le fonctionnement de Docker (client, images, COW, volumes)
RUN Et la virtualisation alors ?
ENV conclusion=”Les containers aujourd’hui, l’écosystème et le futur”
Introduction
Dive into
containers
Le Dockerfile de la présentation
Conclusion
3
La définition de
base
Histoire
C’est quoi Docker ?
Présentation globale
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 - 451 Research
▪ Silicon Valley : entreprise française - dotCloud (PaaS)
▪ Fondée par Solomon Hykes (Epitech Lille)
▪ Projet Docker devenu Open-Source en 2013
▪ Devenue Docker Inc. depuis 2013
La technologie
■ Utilise un ensemble de technologies open-source
■ Développée en Golang (Google)
■ Historiquement : utilisait une API au dessus de LXC
■ Maintenant : libcontainer => runC (standardisé)
■ Docker est désormais un standard dans le monde des containers
(Open Container Initiative)
C’est quoi Docker ? | Dive into containers | Conclusion
4
C’est quoi Docker ?
Son impact dans le monde IT
C’est quoi Docker ? | Dive into containers | Conclusion
5
C’est quoi Docker ?
L’impact dans le monde IT
C’est quoi Docker ? | Dive into containers | Conclusion
6
Dive into containers
C’est quoi Docker ? | Dive into containers | Conclusion
7
Analogie
Dive into containers
C’est quoi un container ?
Même principe que les conteneurs intermodaux
▪ XVIIe siècle : Volonté de standardiser le transport des marchandises
▪ Boîte en bois de taille uniforme pour transporter le charbon
(Angleterre)
▪ 1933 : standardisation des fameuses boîtes métalliques
▪ Transporteur : s’occupe simplement de charger les conteneurs sur le
bateau (gain de temps, d’argent, automatisation)
Dans le monde
I.T
C’est quoi Docker ? | Dive into containers | Conclusion
8
Disclaimer
Dive into containers
C’est quoi un container ?
En fait un container logiciel n’existe pas !
Assemblage de primitives systèmes/technologies dans le noyau Linux
=> renforcer l’isolation entre les processus sur le système
C’est quoi alors ?
C’est quoi Docker ? | Dive into containers | Conclusion
9
Système
Dive into containers
C’est quoi un container ?
Ensemble de mécanismes intimement liés au noyau du système
=> les containers Linux ne fonctionnent que sur Linux
=> les containers Windows ne fonctionnent que sur Windows
Histoire
▪ 1979 (UNIX 7) : notions de container avec chroot
▪ 2000 : BSD Jail
▪ 2004 : Zones Solaris
▪ 2006 : OpenVZ
▪ 2008 : LXC (Canonical)
▪ 2013 : Docker
Inconvénient Difficile à utiliser et à administrer
Apports de
Docker
Apporte un ensemble d’outils facile à utiliser en CLI + images
composables et réutilisables + registry (Docker Hub)
C’est quoi Docker ? | Dive into containers | Conclusion
10
Dive into containers
Comment ça marche : les Linux Namespaces
C’est quoi Docker ? | Dive into containers | Conclusion
11
Dive into containers
Comment ça marche : les Linux Namespaces
Noyau
Matériel
ProcessusProcessus Processus
Namespaces
mount
user
ipc
net
pid
uts
cgroup
s
C’est quoi Docker ? | Dive into containers | Conclusion
12
Dive into containers
Comment ça marche : les Linux Namespaces (PID)
C’est quoi Docker ? | Dive into containers | Conclusion
13
Dive into containers
Comment ça marche : les Linux Namespaces (mount)
C’est quoi Docker ? | Dive into containers | Conclusion
14
Dive into containers
Comment ça marche : les Linux Namespaces (net)
C’est quoi Docker ? | Dive into containers | Conclusion
15
Dive into containers
Comment ça marche : les Control Groups
Noyau
Matériel
ProcessusProcessus Processus
Namespacescontrol groups
C’est quoi Docker ? | Dive into containers | Conclusion
16
Dive into containers
Comment ça marche : Seccomp et SELinux/AppArmor
Noyau
Matériel
ProcessusProcessus
Processus
Namespacescontrol groups
seccomp
SELinux/AppArmor
C’est quoi Docker ? | Dive into containers | Conclusion
17
Dive into containers
Fonctionnement de Docker : Architecture
C’est quoi Docker ? | Dive into containers | Conclusion
18
Dive into containers
Fonctionnement de Docker : les images
Ce n’est pas un OS Linux !
=> Ensemble de binaires propres à une distribution Linux
C’est quoi Docker ? | Dive into containers | Conclusion
19
Dive into containers
Fonctionnement de Docker : le COW et les volumes
C’est quoi Docker ? | Dive into containers | Conclusion
Copy-on-write Volumes
20
Dive into containers
Et la virtualisation alors ? VM vs containers
C’est quoi Docker ? | Dive into containers | Conclusion
21
VM légère ?
Dive into containers
Et la virtualisation alors ? VM vs containers
En profondeur
Ressemble à une VM légère vue de loin :
▪ Connexion SSH (pas bien) ou shell interactif possible (c’est mieux)
▪ Voit ses propres processus uniquement
▪ Dispose d’une interface réseau
▪ Possibilité d’installer des packages
▪ Possibilité de démarrer des services
Ce n’est absolument pas une VM !
▪ Utilise le noyau (+modules) de l’hôte
▪ Ne peut pas booter un OS différent de l’hôte
▪ Processus du container visibles depuis l’hôte
▪ Aucune conscience des limitations de ressources par les cgroups
(attention à l’OOM Killer)
=> L’isolation est moindre !
DevOps
▪ Changement d’approche : concept du “Pets vs. Cattle”
▪ VMs : votre chat/chien - containers : du bétail
C’est quoi Docker ? | Dive into containers | Conclusion
22
Dive into containers
Et la virtualisation alors ? VM vs containers
C’est quoi Docker ? | Dive into containers | Conclusion
VMs
Containers
23
Dive into containers
C’est quoi Docker ? | Dive into containers | Conclusion
24
Conclusion
C’est quoi Docker ? | Dive into containers | Conclusion
25
Docker
Conclusion
Les containers aujourd’hui, l’écosystème et le futur
Disponible sur Linux, Windows (natif et non natif) et MacOS (non natif)
=> Bientôt sur Windows Subsystem for Linux 2 (micro-vm + support Docker)
Ecosystème
Autres
implémentations
▪ Titanesque : nombreux projets autour de Docker et Kubernetes
▪ Side-projects et outils tiers : moby project, RancherLabs
▪ Utilisation massive dans le cloud : AWS, Azure, GCP, Alibaba Cloud...
▪ Orchestration : Google Kubernetes, Red Hat OpenShift
▪ LXC + LXD (facilite l’utilisation de LXC)
▪ Red Hat Podman : container runtime par défaut sur RHEL 8
▪ CRI-O : container runtime pour Kubernetes
▪ CoreOS rkt, systemd-nspawn, OpenVZ...
Futur
C’est quoi Docker ? | Dive into containers | Conclusion
▪ Gros travaux autour de l’orchestration (écosystème Kubernetes)
▪ Unikernels ? (MirageOS + Xen)
26
Conclusion
Les containers aujourd’hui, l’écosystème et le futur
C’est quoi Docker ? | Dive into containers | Conclusion
27
LISE
Conclusion
Si vous en voulez davantage !
Conférences A5 en Janvier 2019 : conférence autour des containers
(moi-même)
Veille
technologique
▪ Conférences sur le web (YouTube) : Devoxx, Breizh Camp, GDG
France, DockerCon, Paris Container Day
▪ Votre curiosité…et surtout, expérimentez !
C’est quoi Docker ? | Dive into containers | Conclusion
28
Conclusion
Si vous en voulez davantage !
C’est quoi Docker ? | Dive into containers | Conclusion
Chaine YouTube : Devoxx FR
29
Conclusion
Si vous en voulez davantage !
C’est quoi Docker ? | Dive into containers | Conclusion
Chaine YouTube : Devoxx FR
30
Conclusion
Si vous en voulez davantage !
C’est quoi Docker ? | Dive into containers | Conclusion
Chaine YouTube : DockerCon
31
Conclusion
Si vous en voulez davantage !
C’est quoi Docker ? | Dive into containers | Conclusion
Chaine YouTube : VMware Cloud Native Apps
32
Conclusion
Si vous en voulez davantage !
C’est quoi Docker ? | Dive into containers | Conclusion
33
Merci de votre attention !

Vulgarisation de la technologie de containers Docker

  • 1.
    docker run florian/presentation:A4 Dockeret le monde des containers logiciels (v2) Lundi 24 Juin 2019
  • 2.
    1 Florian Bobinid $PRESENTER whoami A4- Futur ingénieur systèmes Linux / DevOps
  • 3.
    2 FROM C’est quoiDocker ? Son impact dans le monde IT ? RUN C’est quoi un container logiciel ? Comment ça marche ? RUN Le fonctionnement de Docker (client, images, COW, volumes) RUN Et la virtualisation alors ? ENV conclusion=”Les containers aujourd’hui, l’écosystème et le futur” Introduction Dive into containers Le Dockerfile de la présentation Conclusion
  • 4.
    3 La définition de base Histoire C’estquoi Docker ? Présentation globale 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 - 451 Research ▪ Silicon Valley : entreprise française - dotCloud (PaaS) ▪ Fondée par Solomon Hykes (Epitech Lille) ▪ Projet Docker devenu Open-Source en 2013 ▪ Devenue Docker Inc. depuis 2013 La technologie ■ Utilise un ensemble de technologies open-source ■ Développée en Golang (Google) ■ Historiquement : utilisait une API au dessus de LXC ■ Maintenant : libcontainer => runC (standardisé) ■ Docker est désormais un standard dans le monde des containers (Open Container Initiative) C’est quoi Docker ? | Dive into containers | Conclusion
  • 5.
    4 C’est quoi Docker? Son impact dans le monde IT C’est quoi Docker ? | Dive into containers | Conclusion
  • 6.
    5 C’est quoi Docker? L’impact dans le monde IT C’est quoi Docker ? | Dive into containers | Conclusion
  • 7.
    6 Dive into containers C’estquoi Docker ? | Dive into containers | Conclusion
  • 8.
    7 Analogie Dive into containers C’estquoi un container ? Même principe que les conteneurs intermodaux ▪ XVIIe siècle : Volonté de standardiser le transport des marchandises ▪ Boîte en bois de taille uniforme pour transporter le charbon (Angleterre) ▪ 1933 : standardisation des fameuses boîtes métalliques ▪ Transporteur : s’occupe simplement de charger les conteneurs sur le bateau (gain de temps, d’argent, automatisation) Dans le monde I.T C’est quoi Docker ? | Dive into containers | Conclusion
  • 9.
    8 Disclaimer Dive into containers C’estquoi un container ? En fait un container logiciel n’existe pas ! Assemblage de primitives systèmes/technologies dans le noyau Linux => renforcer l’isolation entre les processus sur le système C’est quoi alors ? C’est quoi Docker ? | Dive into containers | Conclusion
  • 10.
    9 Système Dive into containers C’estquoi un container ? Ensemble de mécanismes intimement liés au noyau du système => les containers Linux ne fonctionnent que sur Linux => les containers Windows ne fonctionnent que sur Windows Histoire ▪ 1979 (UNIX 7) : notions de container avec chroot ▪ 2000 : BSD Jail ▪ 2004 : Zones Solaris ▪ 2006 : OpenVZ ▪ 2008 : LXC (Canonical) ▪ 2013 : Docker Inconvénient Difficile à utiliser et à administrer Apports de Docker Apporte un ensemble d’outils facile à utiliser en CLI + images composables et réutilisables + registry (Docker Hub) C’est quoi Docker ? | Dive into containers | Conclusion
  • 11.
    10 Dive into containers Commentça marche : les Linux Namespaces C’est quoi Docker ? | Dive into containers | Conclusion
  • 12.
    11 Dive into containers Commentça marche : les Linux Namespaces Noyau Matériel ProcessusProcessus Processus Namespaces mount user ipc net pid uts cgroup s C’est quoi Docker ? | Dive into containers | Conclusion
  • 13.
    12 Dive into containers Commentça marche : les Linux Namespaces (PID) C’est quoi Docker ? | Dive into containers | Conclusion
  • 14.
    13 Dive into containers Commentça marche : les Linux Namespaces (mount) C’est quoi Docker ? | Dive into containers | Conclusion
  • 15.
    14 Dive into containers Commentça marche : les Linux Namespaces (net) C’est quoi Docker ? | Dive into containers | Conclusion
  • 16.
    15 Dive into containers Commentça marche : les Control Groups Noyau Matériel ProcessusProcessus Processus Namespacescontrol groups C’est quoi Docker ? | Dive into containers | Conclusion
  • 17.
    16 Dive into containers Commentça marche : Seccomp et SELinux/AppArmor Noyau Matériel ProcessusProcessus Processus Namespacescontrol groups seccomp SELinux/AppArmor C’est quoi Docker ? | Dive into containers | Conclusion
  • 18.
    17 Dive into containers Fonctionnementde Docker : Architecture C’est quoi Docker ? | Dive into containers | Conclusion
  • 19.
    18 Dive into containers Fonctionnementde Docker : les images Ce n’est pas un OS Linux ! => Ensemble de binaires propres à une distribution Linux C’est quoi Docker ? | Dive into containers | Conclusion
  • 20.
    19 Dive into containers Fonctionnementde Docker : le COW et les volumes C’est quoi Docker ? | Dive into containers | Conclusion Copy-on-write Volumes
  • 21.
    20 Dive into containers Etla virtualisation alors ? VM vs containers C’est quoi Docker ? | Dive into containers | Conclusion
  • 22.
    21 VM légère ? Diveinto containers Et la virtualisation alors ? VM vs containers En profondeur Ressemble à une VM légère vue de loin : ▪ Connexion SSH (pas bien) ou shell interactif possible (c’est mieux) ▪ Voit ses propres processus uniquement ▪ Dispose d’une interface réseau ▪ Possibilité d’installer des packages ▪ Possibilité de démarrer des services Ce n’est absolument pas une VM ! ▪ Utilise le noyau (+modules) de l’hôte ▪ Ne peut pas booter un OS différent de l’hôte ▪ Processus du container visibles depuis l’hôte ▪ Aucune conscience des limitations de ressources par les cgroups (attention à l’OOM Killer) => L’isolation est moindre ! DevOps ▪ Changement d’approche : concept du “Pets vs. Cattle” ▪ VMs : votre chat/chien - containers : du bétail C’est quoi Docker ? | Dive into containers | Conclusion
  • 23.
    22 Dive into containers Etla virtualisation alors ? VM vs containers C’est quoi Docker ? | Dive into containers | Conclusion VMs Containers
  • 24.
    23 Dive into containers C’estquoi Docker ? | Dive into containers | Conclusion
  • 25.
    24 Conclusion C’est quoi Docker? | Dive into containers | Conclusion
  • 26.
    25 Docker Conclusion Les containers aujourd’hui,l’écosystème et le futur Disponible sur Linux, Windows (natif et non natif) et MacOS (non natif) => Bientôt sur Windows Subsystem for Linux 2 (micro-vm + support Docker) Ecosystème Autres implémentations ▪ Titanesque : nombreux projets autour de Docker et Kubernetes ▪ Side-projects et outils tiers : moby project, RancherLabs ▪ Utilisation massive dans le cloud : AWS, Azure, GCP, Alibaba Cloud... ▪ Orchestration : Google Kubernetes, Red Hat OpenShift ▪ LXC + LXD (facilite l’utilisation de LXC) ▪ Red Hat Podman : container runtime par défaut sur RHEL 8 ▪ CRI-O : container runtime pour Kubernetes ▪ CoreOS rkt, systemd-nspawn, OpenVZ... Futur C’est quoi Docker ? | Dive into containers | Conclusion ▪ Gros travaux autour de l’orchestration (écosystème Kubernetes) ▪ Unikernels ? (MirageOS + Xen)
  • 27.
    26 Conclusion Les containers aujourd’hui,l’écosystème et le futur C’est quoi Docker ? | Dive into containers | Conclusion
  • 28.
    27 LISE Conclusion Si vous envoulez davantage ! Conférences A5 en Janvier 2019 : conférence autour des containers (moi-même) Veille technologique ▪ Conférences sur le web (YouTube) : Devoxx, Breizh Camp, GDG France, DockerCon, Paris Container Day ▪ Votre curiosité…et surtout, expérimentez ! C’est quoi Docker ? | Dive into containers | Conclusion
  • 29.
    28 Conclusion Si vous envoulez davantage ! C’est quoi Docker ? | Dive into containers | Conclusion Chaine YouTube : Devoxx FR
  • 30.
    29 Conclusion Si vous envoulez davantage ! C’est quoi Docker ? | Dive into containers | Conclusion Chaine YouTube : Devoxx FR
  • 31.
    30 Conclusion Si vous envoulez davantage ! C’est quoi Docker ? | Dive into containers | Conclusion Chaine YouTube : DockerCon
  • 32.
    31 Conclusion Si vous envoulez davantage ! C’est quoi Docker ? | Dive into containers | Conclusion Chaine YouTube : VMware Cloud Native Apps
  • 33.
    32 Conclusion Si vous envoulez davantage ! C’est quoi Docker ? | Dive into containers | Conclusion
  • 34.
    33 Merci de votreattention !