Slide 1

Slide 1 text

Gildas Cuisinier

Slide 2

Slide 2 text

Gildas Cuisinier [☰] Sfeir Benelux @gcuisinier

Slide 3

Slide 3 text

https://voxxeddays.com/luxembourg/ CFP-voxxed-lux.yajug.org 22 Juin

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

2013 2014 2015 2016 0.1 2013-03-23 Première release publique 1.0.0 2014-06-09 Production ready 1.0.0 2014-10-16 Fig devient Docker-Compose 1.6.0 2016-01-15 Compose file 2.0 1.9.0 2015-11-03 Networking Volume 1.10 2016-02-04 Seccomp User Namespaces 1.0.0 2015-10-13 Production Ready 1.1.0 2016-02-04 Production Ready

Slide 6

Slide 6 text

Pourquoi Docker ?

Slide 7

Slide 7 text

« Chez moi, ça marche ! »

Slide 8

Slide 8 text

IT avant Monolithique
 une grosse application, une technologie Scalabitité verticale
 Plus gros serveur Cycle de vie très long
 Grosse mise en production, peu fréquente

Slide 9

Slide 9 text

Et maintenant ? Micro-Services, SOA, Distribuée
 Plein de petites applications spécialisées Plusieurs languages
 Utilisation du plus adapté pour une tâche Scalabitité horizontale
 Plus de serveur en // Cycle de vie court, itératif

Slide 10

Slide 10 text

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Slide 11

Slide 11 text

Analogie

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Qu’est-ce que Docker?

Slide 17

Slide 17 text

Container vs VM

Slide 18

Slide 18 text

Virtual Machine Host OS Server Server Hypervisor Hypervisor Guest OS Bin/Lib App Guest OS Bin/Lib App Guest OS Bin/Lib App Guest OS Bin/Lib App Guest OS Guest OS Bin/Lib Bin/Lib App App VM VM

Slide 19

Slide 19 text

Container Server Host OS Bin/Lib App avec des vrais morceaux de Bin/Lib App App Conteneur Conteneur

Slide 20

Slide 20 text

Container Léger
 Taille(Container) < Taille(VM)
 —> Transfert réseau plus rapide
 Démarre plus rapidement Performance
 Pas d’overhead mémoire
 Léger overhead réseau* Isolation
 * Utilisation de NAT dans le mode de réseau par défaut

Slide 21

Slide 21 text

Mais Partage du Kernel
 Uniquement Linux->Linux
 Faille Kernel non isolée Container = 1 process*
 Attention aux dépendances sur syslog, cron, logrotate, … * Il est possible de lancer plusieurs processus fils

Slide 22

Slide 22 text

Docker ? Une révolution ?!

Slide 23

Slide 23 text

Container Concept pas vraiment neuf
 Solaris Zone, BSD Jails, LXC Orienté SysAdmin
 Donc complexe ;-)

Slide 24

Slide 24 text

Docker Orienté « Développeur »
 Mécanisme de packaging, versioning Partage / Ré-utilisation
 import/export, registry, Docker Hub API
 Extension / Integration, Ecosystème

Slide 25

Slide 25 text

Docker Linux
 Engine Windows
 boot2docker + cli
 Microsoft/Docker, work in progress -> Windows 10 OSX
 boot2docker + cli

Slide 26

Slide 26 text

Les concepts

Slide 27

Slide 27 text

Fonctions du Kernel CGroup + Namespaces
 
 Contrôle des resources (CPU, Mémoire)
 Isolation


Slide 28

Slide 28 text

Layers Copy on Write
 AuFS, Device Mapper, BTRFS, Overlayfs
 
 Permet des démarrages rapides

Slide 29

Slide 29 text

Layers ubuntu + PLAY_SDK Play SDK + MyApp.zip apt-get update apt-get install nginx nginx MyAPP nginx

Slide 30

Slide 30 text

Volume •Filesystem externe au conteneur
 Permet la persistance des données •Partageable entre plusieurs conteneurs •Extensible par des plugins 
 NFS, AWS EBS, …

Slide 31

Slide 31 text

Network •Réseau dédié
 Permet l’isolation d’un groupe de conteneur •Out of the box : Host / Overlay
 Host : Réseau propre à un engine
 Overlay : Réseau accessible entre plusieurs nodes •Extensible par des plugins 
 Weave, Calico, ..

Slide 32

Slide 32 text

Dockerfile

Slide 33

Slide 33 text

Request-an-Inbox Dockerfile FROM java:8-jdk MAINTAINER Gildas Cuisinier RUN useradd -d "/opt/rai" -u 1000 -m rai ADD request-an-inbox-0.0.1.jar ./ WORKDIR /opt/rai USER rai EXPOSE 8080 CMD java -jar request-an-inbox-0.0.1-SNAPSHOT.jar

Slide 34

Slide 34 text

Docker Compose anciennement Fig

Slide 35

Slide 35 text

Request An Inbox web:
 build: .
 ports:
 - "8080:8080"
 links:
 - db
 environment:
 - REDIS_HOSTNAME=db
 - SPRING_REDIS_HOST=db
 
 db:
 image: redis
 command: redis-server
 volumes:
 - /Users/gcuisinier/Devel/opensource/ request.an.inbox/data:/data

Slide 36

Slide 36 text

Partage

Slide 37

Slide 37 text

DockerHub Repository d’images Modèle GitHub Automated Build Webhook

Slide 38

Slide 38 text

Docker Registry

Slide 39

Slide 39 text

Docker Swarm Cluster d’engine Docker Orchestration / Répartition des conteneurs

Slide 40

Slide 40 text

Node 1 Node 3 Node 2 Serveur Swarm Cluster Swarm Docker API Docker API Docker API Docker API

Slide 41

Slide 41 text

Questions ?

Slide 42

Slide 42 text

Références slideshare.net/jpetazzo/ docker.com images : openclipart.org/ Logo Docker & @BlogLaurel