SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
Workshop #4
Docker,
des tours dans le petit bassin…
Le 24-mai-2016 – Théo Chamley, Julien Follenfant & Ludovic Piot
Evénements
les différents événements Oxalide
Workshop #4 - Docker, des tours dans le petit bassin…
Les événements Oxalide…
• Objectif : présentation d’une thématique métier ou technique
• Tout public : 80 à 100 personnes
• Déroulé : 1 soir par trimestre de 18h à 21h
• Introduction de la thématique par un partenaire
• Tour de table avec des clients et non clients
• Echange convivial autour d’un apéritif dînatoire
• Objectif : présentation d’une technologie
• Réservé aux clients : public technique avec laptop – 30 personnes
• Déroulé : 1 matinée par trimestre de 9h à 13h
• Présentation de la technologie
• Tuto pour la configuration en ligne de commande
• Objectif : présentation d’un outil
• Réservé aux clients : 30 personnes
• Déroulé : 1 soir par trimestre de 18h à 21h
• Démonstration des fonctionnalités de l’outil
• Echange convivial autour de pizzas
Apérotech
Workshop
Pizza’n’Tools
Workshop #4 - Docker, des tours dans le petit bassin…
Les speakers…
Julien Follenfant
Customer Team 01
@ Oxalide
Théo Chamley
Conseil / Archi / DevOps
@ Oxalide
@MrTrustor
Ludovic Piot
Conseil / Archi / DevOps
@ Oxalide
@lpiot
Présentation de Docker
Hands-on #1 : mon premier container
Comment ça marche ?
Les nouvelles collaborations
Ecosystème
Démo : découverte de Kubernetes
Questions & réponses ?
1
3
2
4
5
6
7
Présentation de Docker
Présentation de Docker
Qu’est-ce que Docker ?
Présentation de Docker
Métaphore… avant
Présentation de Docker
Métaphore… après…
Présentation de Docker
Qu’est-ce que Docker ?
le container Linux Docker
enveloppe logique isolant…
un ou plusieurs processus…
en exécution
décrit le contenu du container
décrit l’interface entre le
container et son hôte
gère le cycle de vie du container :
build / package / deploy / run / kill
Présentation de Docker
Principales qualités de Docker ?
PO
rtable
DI
sposable
LI
ve
SO
cial
Présentation de Docker
POrtable
Disclaimer !
On est dans le chapitre POrtable,
mais je ne vais pas parler de
Docker sur Ms Windows Server
Présentation de Docker
POrtable
Mise en œuvre facile
partage peu de choses avec l’
hôte, mis à part le kernel
s’appuie sur les fonctionnalités
natives du kernel Linux
produit stand-alone écrit en Go.
peu d’adhérence avec les autres
containers : incompatibilités
limitées
overhead quasi-inexistant
peu de configuration pour être
opérationnel
Hardware Hardware / VM
Hypervisor Linux Kernel
VM
OS
Libs
Middlewa
res
conf.
Apps
Kernel
HDW
conf.conf.
Container
OS
Libs
Middlewa
res
conf.
Apps
conf.conf.
VM
OS
Libs
Middlewa
res
conf.
Apps
Kernel
HDW
conf.conf.
Container
OS
Libs
Middlewa
res
conf.
Apps
conf.conf.
Virtualization Isolation
Container Runtime
architecture microservices
Présentation de Docker
POrtable… meet the market…
Présentation de Docker
DIsposable
Cattle vs. Pet
build du container décrit dans
Dockerfile
déploiement par docker pull
Docker est une technologie de
packaging et déploiement
Infra as Code
Immutable Infrastructure :
build & replace vs. upgrade
Présentation de Docker
DIsposable… oui mais…
Par nature, un container éteint
perd ses données.
Persister les données est un
sujet :
● utiliser un mécanisme
applicatif (ELK)
● utiliser un stockage tiers
(base de données, object
storage)
● monter des volumes du
host dans les containers
Docker
L’application embarquée dans le container
doit être “distribuée” par nature (twelve-
factor app) :
● tolérance à la panne (load-balancing)
● pas de session stickyness
● compatible blue/green
La plateforme Docker doit être résiliente
Présentation de Docker
DIsposable… meet the market…
Présentation de Docker
LIve
Git style
Images versionnées
API à la git :
● diff
● commit
● tag
● history
Images incrémentales
multi-layered filesystem Image
Build
Run start / stop
restartCommit
Présentation de Docker
SOcial
Github style
dépôts d’images
Docker registries
Dépôt public et communautaire
Docker Hub
Votes pour les images
Images officielles / trusted
Outil de build continu
Outil de diagnostic continu
Docker Security Scanning
Hands-on #1
Mon premier container
Prérequis
Docker toolbox
Download & install for Windows or Mac OS
https://www.docker.com/products/docker-toolbox
Check de
l’installation
Et votre premier
docker run :-)
Premier build de container
Dockerfile
jfo@lab ~/oxatest
$ vim Dockerfile
FROM debian
MAINTAINER jfollenfant <jfo@oxalide.com>
ADD ./hello.php /
RUN apt-get update
RUN apt-get -y install php5-cli
CMD php /hello.php && echo $ENV
jfo@lab ~/oxatest
$ vim hello.php
<?php echo “hello from Oxaliden”; ?>
jfo@lab ~/oxatest
$ docker build -t hello-oxa .
[...] building image….
jfo@lab ~/oxatest
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-oxa latest 7c3877476e31 About a minute 198 MB
Sources
Dockerfile +
hello world en
PHP
Build d’une
image ready to
run.
Déroulement des commandes du
hands on disponible sur :
http://tinyurl.com/j2yp857
Pour aller plus loin
Elasticsearch cluster dockerized
$ docker run -d --name es-01 -p 9201:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-01”
$ docker run -d --name es-02 -p 9202:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-02”
$ docker run -d --name es-03 -p 9203:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-03”
Use it, break it, fix it, trash it, change it.
Elasticsearch cluster dockerized
Elasticsearch autodiscovery entre les 3 containers
$ docker exec -it es-01 plugin install lmenezes/elasticsearch-kopf/v1.6.1
Accès depuis un navigateur : http://192.168.99.100:9201/_plugin/kopf
Execution de commandes à l’intérieur d’un container en état RUNNING
Comment ça marche ?
Comment ça marche ?
Namespaces & cgroups
A namespace wraps a global system resource in an abstraction that makes it appear to the
processes within the namespace that they have their own isolated instance of the global
resource.
Namespaces
cgroups (abbreviated from control groups) is a Linux kernel feature that limits, accounts for,
and isolates the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of
processes.
Cgroups
Comment ça marche ?
Layered FS - Poupées russes
● Toutes les écritures sur le
layer Container (R/W)
● Mutualisation des datas
R/O entre les containers
● Copy-on-Write
● Réutilisation des layers
avec le mot clé “FROM”
dans les Dockerfiles
Comment ça marche ?
Layered FS
Comment ça marche ?
Layered FS - Exemple
$ docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
6d28225f8d96: Downloading [=========================> ] 30.96 MB/48.35 MB
166102ec41af: Download complete
d09bfba2bd6a: Download complete
c80dad39a6c0: Download complete
a3ed95caeb02: Download complete
$ docker history ubuntu:16.04
IMAGE CREATED CREATED BY SIZE
c5f1cf30c96b 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 2 weeks ago /bin/sh -c sed -i 's/^#s*(deb.*universe)$/ 1.895 kB
<missing> 2 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
<missing> 2 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 701 B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:ffc85cfdb5e66a5b4f 120.8 MB
A comparer avec le Dockerfile : http://bit.ly/1WDZmHm
Comment ça marche ?
Layered FS
Comment ça marche ?
Build cache
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y curl
ADD foo /
CMD ["/bin/bash"]
3 layers, en cache
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y curl
ADD foo /
ADD bar /
CMD ["/bin/bash"]
Réutilisation des 2 premiers layers
Création de 2 nouveaux layers
Pour ADD et COPY :
→ Checksum du fichier
Comment ça marche ?
Build cache - Attention !
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y curl
CMD ["/bin/bash"]
3 layers, en cache
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y curl nginx
CMD ["/bin/bash"]
Réutilisation du layer “apt-get
update”
→ apt cache pas à jour !
Comment ça marche ?
Networking
Plugin par défaut : bridge → Interface docker0
● Communication avec les autres containers du même host
● Links entre les containers
Discovery :
→ Entrée dans le /etc/hosts
→ Variables d’environnement
→ Serveur DNS interne au Docker Daemon
$ docker run -d --name db training/postgres
$ docker run -d -P --name web --link db:db training/webapp python app.py
Comment ça marche ?
Networking - Multi-hosts
Comment faire communiquer des
containers sur des hosts différents ?
The Docker Way : network plugin overlay
$ docker network create 
--driver overlay multi-host-net
$ docker run -itd 
--net=multi-host-net busybox
● Encapsulation du trafic
● backend k/v : Consul, etcd, Zookeeper
The Not-Docker (i.e CoreOS/Kubernetes)
Way : flanneld
● Un subnet par host
● Une IP par container/pod → pas de
problème de ports
● Encapsulation par défaut, intégration
GCP et AWS
● k/v backend : etcd
Comment ça marche ?
Volumes
→ Seul le container dbstore doit être persisté !
Comment gérer les données à l’intérieur d’un container ?
$ docker run -P --name web -v /data/images:/var/www/mon_app/images mon_app
$ docker run -P --name web -v /conf/app.conf:/var/www/mon_app/app.conf mon_app
L’option --volumes-from permet de gérer les données comme un container :
$ docker create -v /dbdata --name dbstore postgres /bin/true
$ docker run -d --volumes-from dbstore --name db1 postgres
$ docker run --rm --volumes-from dbstore 
-v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
Comment ça marche ?
Volumes - Multi-hosts
Comment faire pour que la donnée suive le container (i.e haute disponibilité) ?
Docker Plugins !
● Le volume n’est pas forcément stocké en local sur le host.
● Il existe des plugins pour :
○ AWS EBS
○ Ceph
○ GlusterFS
○ NFS
○ NetApp
○ iSCSI
○ …
Le plugin Flocker (https://github.com/ClusterHQ/flocker) regroupe un certain nombre de backends.
Les nouvelles collaborations
Les nouvelles collaborations
Build / Ship / Run
DEV OPS
Ephemeral
Envs
Les nouvelles collaborations
Docker, pivot du DevOps…
Dev (apps team) Ops (infra team)
gère et opère ce qu’il y a dans le
container
build le container
ne se préoccupe pas de la
plateforme sur laquelle run le
container
fournit la plateforme hébergeant
les containers on-demand
gère et opère les plateformes
hébergeant les containers
gère la sécurité de la plateforme
contre l’intrusion
fournit des dépôts d’images
durcies et prêtes à l’emploi
gère la scalabilité et la multi-
tenancy de la plateforme
Cloud Service What we get… What we do…
IaaS
Infrastructure resources (compute / storage / network)
VMs marketplace
VM / network / storage provisionning
CaaS
Platform dedicated to container run
Container marketplace
Environment provisionning
Container deployment (OS / middleware / app)
PaaS
Vertical stacks dedicated to programmation languages
Vertical stack / middleware marketplace
Environment provisionning
Application deployment
SaaS End-user services Use of services
Les nouvelles collaborations
IaaS, CaaS, PaaS, SaaS…
Hardware / VM
Linux Kernel
Container
OS
Libs
Middle
wares
conf.
Apps
conf.conf.
Container
OS
Libs
Middle
wares
conf.
Apps
conf.conf.
Container Runtime
Hardware
Hypervisor
VM
OS
Libs
Middle
wares
conf.
Apps
Kernel
HDW
conf.conf.
VM
OS
Libs
Middle
wares
conf.
Apps
Kernel
HDW
conf.conf.
IaaS
PaaS
SaaS
CaaS
PaaS
Les nouvelles collaborations
DevOps… meet the market…
Ecosystème
Ecosystème
Le bestiaire Docker
Docker Engine
expose l’API de gestion du
container
s’appuie sur containerd et runC
depuis Docker 1.11
runC runC runC
Docker Engine
warden/garden
des alternatives existent :
● Rocket chez CoreOS
● Garden chez CloudFoundry
portée par la Linux Foundation
Ecosystème
Le bestiaire Docker
Docker Compose
décrit le provisionning d’un service
composé de multiples containers
gère les dépendances entre
containers
Docker Engine
gestion limitée à un seul host
préserve les données des volumes
à la création des containers
limite l’update de la stack aux
seuls containers modifiés
permet d’isoler de multiples envs.
sur un même hôte
Ecosystème
Le bestiaire Docker
Docker Machine
décrit le provisionning de multiples
hôtes Docker
architecturé autours de plugins
gère les principaux services IaaS
et virtualisation (~25)
utilisé au sein de Docker Toolbox
gère le déploiement de clusters
Docker Swarm
Ecosystème
Les dépôts
Docker Hub
dépôt public d’images Docker
images officielles
images de confiance (Notary)
Mécanismes de vote
Mécanismes de build continu
Audit de sécurité (Nautilus)
4 registries comparées (Rancher) :
http://goo.gl/eNomg4
Ecosystème
L’autodiscovery
la configuration du container
varie selon :
● l’env. (ex. : dev / prod)
● l’hôte (ex. : port, ip)
● la version (ex. : URI)
● le nb. d’instances (ex. : ASG)
● les autres containers (ex. : DB)
injection de configuration au run :
● docker -e myVAR=’myValue’
● docker compose
configuration dynamique :
● stockage distribué
● résilient (au partitionnement
réseau)
● API CRUD
● healthcheck
● accès DNS
Ecosystème
Les composants réseaux
Smart load balancers
HAproxy : No hot reload, rechargement de
configurations via adapter consul
Traefik : support multi backends natif ( etcd,
consul, zookeeper, swarm… )
Advanced HTTP features SSL self
managed, HTTP/2
Docker Engine
Pilotage via API REST
Gestion avancée du trafic graceful
shutdown, retry request et coupe circuit
Ecosystème
L’orchestration
Gestion d’une population
(nombreuse) de containers :
● placement sur un hôte (dispo
de ressources, affinité)
● élasticité
● fail-over (perte de l’hôte)
● fail-over (perte d’un container)
● dépendances (service multi-
containers)
● exposition réseau du
service
Fleet
Ecosystème
L’orchestration
Ecosystème
Les solutions PaaS/CaaS
refactoring des solutions de PaaS
historiques
émergence de pure players CaaS
extension de solutions de clouds
publics pour gérer les containers
Ecosystème
Rancher
Ecosystème
Deis
Démo
découverte de Kubernetes
Demo Kubernetes
L’architecture
Questions & réponses
Workshop #4 - Docker, des tours dans le petit bassin…
Références
Slide decks :
Arnaud Mazin et Adrien Blind (http://fr.slideshare.net/adrienblind/docker-redistributing-devops-cards-on-the-way-to-paas)
Arnaud Mazin et Edouard Devouge - Orchestrator Feature Comparison (http://blog.octo.com/docker-en-production-la-bataille-sanglante-des-
orchestrateurs-de-conteneurs/)
Docker Survey 2016 (https://www.docker.com/survey-2016)
Crédits graphiques :
Google Images…
http://techfree.com.br/2015/04/criacao-automatizada-de-imagens-docker-github-e-docker-hub/
http://blog.xebia.com/security-is-maturing-in-the-docker-ecosystem/
bestiaire Docker : Laurel (https://twitter.com/laurelcomics et https://bloglaurel.com/)
Oxalide © 2015 – Documents confidentiels
Ou contactez directement :
Maxime KURKDJIAN – Directeur associé
Tel : +33 1 75 77 16 58 / mku
Sébastien LUCAS – Directeur associé
Tel : +33 1 75 77 16 59 / slu@oxalide.com
Siège social & NOC :
25 Boulevard de Strasbourg – 75010 Paris
Tel : +33 1 75 77 16 66
e-mail : commercial@oxalide.com
Oxalide © 2015 – Documents confidentiels

Más contenido relacionado

La actualidad más candente

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
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte Zenika
 
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
 
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
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
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
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.ioNicolas Hennion
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et GaudiEmmanuel Quentin
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
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 DockerSmartnSkilled
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
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
 

La actualidad más candente (20)

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 ?
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
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 ...
 
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, ...
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
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 ?
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Intro docker
Intro dockerIntro docker
Intro docker
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et Gaudi
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
12-Factor
12-Factor12-Factor
12-Factor
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
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
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Devoxx France : GruntJs In Action
Devoxx France : GruntJs In ActionDevoxx France : GruntJs In Action
Devoxx France : GruntJs In Action
 
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
 

Destacado

Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityLudovic Piot
 
Docker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSDocker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSAdrien Blind
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 
Oxalide Workshop #5 - Docker avancé & Kubernetes
Oxalide Workshop #5 - Docker avancé & KubernetesOxalide Workshop #5 - Docker avancé & Kubernetes
Oxalide Workshop #5 - Docker avancé & KubernetesLudovic Piot
 
Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12Ludovic Piot
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYCChristian Posta
 
containerd and CRI
containerd and CRIcontainerd and CRI
containerd and CRIDocker, Inc.
 
Docker and the Container Revolution
Docker and the Container RevolutionDocker and the Container Revolution
Docker and the Container RevolutionRomain Dorgueil
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Docker ata glance
Docker ata glanceDocker ata glance
Docker ata glancePhilip Wang
 
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
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerJulien Dubois
 
Docker-OVS
Docker-OVSDocker-OVS
Docker-OVSsnrism
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreStephane Manciot
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011Henri Gomez
 
Dev opsmeetup sept2013-leaseweb
Dev opsmeetup sept2013-leasewebDev opsmeetup sept2013-leaseweb
Dev opsmeetup sept2013-leasewebMicrosoft
 
Resume Shavez Hasan (1)
Resume Shavez Hasan (1)Resume Shavez Hasan (1)
Resume Shavez Hasan (1)Shavez Mirza
 

Destacado (20)

Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperability
 
Docker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSDocker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaS
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
Oxalide Workshop #5 - Docker avancé & Kubernetes
Oxalide Workshop #5 - Docker avancé & KubernetesOxalide Workshop #5 - Docker avancé & Kubernetes
Oxalide Workshop #5 - Docker avancé & Kubernetes
 
Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
containerd and CRI
containerd and CRIcontainerd and CRI
containerd and CRI
 
Docker and the Container Revolution
Docker and the Container RevolutionDocker and the Container Revolution
Docker and the Container Revolution
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Docker ata glance
Docker ata glanceDocker ata glance
Docker ata glance
 
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...
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec Docker
 
Docker-OVS
Docker-OVSDocker-OVS
Docker-OVS
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
 
Dev opsmeetup sept2013-leaseweb
Dev opsmeetup sept2013-leasewebDev opsmeetup sept2013-leaseweb
Dev opsmeetup sept2013-leaseweb
 
Resume Shavez Hasan (1)
Resume Shavez Hasan (1)Resume Shavez Hasan (1)
Resume Shavez Hasan (1)
 
DailyTranslate Brochure
DailyTranslate BrochureDailyTranslate Brochure
DailyTranslate Brochure
 

Similar a Oxalide Workshop #4 - Docker, des tours dans le petit bassin

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
 
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
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de dockerjean pasqualini
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
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
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à dockerBoubker ABERWAG
 
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
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfPascal Ponzoni
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsJohan Moreau
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...Paris Open Source Summit
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureParis Container Day
 
Introduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesIntroduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesYann Nave
 

Similar a Oxalide Workshop #4 - Docker, des tours dans le petit bassin (20)

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 ?
 
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...
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
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
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à 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
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Be zend docker
Be zend dockerBe zend docker
Be zend docker
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
Introduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesIntroduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP Rennes
 

Más de Ludovic Piot

[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...
[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...
[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...Ludovic Piot
 
Devops, un tour d'horizon - Eutelsat 2018
Devops, un tour d'horizon -  Eutelsat 2018Devops, un tour d'horizon -  Eutelsat 2018
Devops, un tour d'horizon - Eutelsat 2018Ludovic Piot
 
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérienceLudovic Piot
 
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...Ludovic Piot
 
ClusterEurope2018 - Bootcamp Kubernetes - présentation
ClusterEurope2018 - Bootcamp Kubernetes - présentationClusterEurope2018 - Bootcamp Kubernetes - présentation
ClusterEurope2018 - Bootcamp Kubernetes - présentationLudovic Piot
 
A quick comparison of managed kubernetes services at public cloud providers'
A quick comparison of managed kubernetes services at public cloud providers'A quick comparison of managed kubernetes services at public cloud providers'
A quick comparison of managed kubernetes services at public cloud providers'Ludovic Piot
 
CloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurCloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurLudovic Piot
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?Ludovic Piot
 
PerfUG 3 - perfs système
PerfUG 3 - perfs systèmePerfUG 3 - perfs système
PerfUG 3 - perfs systèmeLudovic Piot
 

Más de Ludovic Piot (9)

[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...
[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...
[Capitole du Libre] #serverless -  mettez-le en oeuvre dans votre entreprise...
 
Devops, un tour d'horizon - Eutelsat 2018
Devops, un tour d'horizon -  Eutelsat 2018Devops, un tour d'horizon -  Eutelsat 2018
Devops, un tour d'horizon - Eutelsat 2018
 
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience
(RivieraDev 2018) #serverless - 2 ans de retourS d'expérience
 
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...
DevoxxFR 2018 #serverless - Mettez-le en œuvre dans votre entreprise et arriv...
 
ClusterEurope2018 - Bootcamp Kubernetes - présentation
ClusterEurope2018 - Bootcamp Kubernetes - présentationClusterEurope2018 - Bootcamp Kubernetes - présentation
ClusterEurope2018 - Bootcamp Kubernetes - présentation
 
A quick comparison of managed kubernetes services at public cloud providers'
A quick comparison of managed kubernetes services at public cloud providers'A quick comparison of managed kubernetes services at public cloud providers'
A quick comparison of managed kubernetes services at public cloud providers'
 
CloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurCloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseur
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
 
PerfUG 3 - perfs système
PerfUG 3 - perfs systèmePerfUG 3 - perfs système
PerfUG 3 - perfs système
 

Oxalide Workshop #4 - Docker, des tours dans le petit bassin

  • 1. Workshop #4 Docker, des tours dans le petit bassin… Le 24-mai-2016 – Théo Chamley, Julien Follenfant & Ludovic Piot
  • 3. Workshop #4 - Docker, des tours dans le petit bassin… Les événements Oxalide… • Objectif : présentation d’une thématique métier ou technique • Tout public : 80 à 100 personnes • Déroulé : 1 soir par trimestre de 18h à 21h • Introduction de la thématique par un partenaire • Tour de table avec des clients et non clients • Echange convivial autour d’un apéritif dînatoire • Objectif : présentation d’une technologie • Réservé aux clients : public technique avec laptop – 30 personnes • Déroulé : 1 matinée par trimestre de 9h à 13h • Présentation de la technologie • Tuto pour la configuration en ligne de commande • Objectif : présentation d’un outil • Réservé aux clients : 30 personnes • Déroulé : 1 soir par trimestre de 18h à 21h • Démonstration des fonctionnalités de l’outil • Echange convivial autour de pizzas Apérotech Workshop Pizza’n’Tools
  • 4. Workshop #4 - Docker, des tours dans le petit bassin… Les speakers… Julien Follenfant Customer Team 01 @ Oxalide Théo Chamley Conseil / Archi / DevOps @ Oxalide @MrTrustor Ludovic Piot Conseil / Archi / DevOps @ Oxalide @lpiot
  • 5. Présentation de Docker Hands-on #1 : mon premier container Comment ça marche ? Les nouvelles collaborations Ecosystème Démo : découverte de Kubernetes Questions & réponses ? 1 3 2 4 5 6 7
  • 10. Présentation de Docker Qu’est-ce que Docker ? le container Linux Docker enveloppe logique isolant… un ou plusieurs processus… en exécution décrit le contenu du container décrit l’interface entre le container et son hôte gère le cycle de vie du container : build / package / deploy / run / kill
  • 11. Présentation de Docker Principales qualités de Docker ? PO rtable DI sposable LI ve SO cial
  • 12. Présentation de Docker POrtable Disclaimer ! On est dans le chapitre POrtable, mais je ne vais pas parler de Docker sur Ms Windows Server
  • 13. Présentation de Docker POrtable Mise en œuvre facile partage peu de choses avec l’ hôte, mis à part le kernel s’appuie sur les fonctionnalités natives du kernel Linux produit stand-alone écrit en Go. peu d’adhérence avec les autres containers : incompatibilités limitées overhead quasi-inexistant peu de configuration pour être opérationnel Hardware Hardware / VM Hypervisor Linux Kernel VM OS Libs Middlewa res conf. Apps Kernel HDW conf.conf. Container OS Libs Middlewa res conf. Apps conf.conf. VM OS Libs Middlewa res conf. Apps Kernel HDW conf.conf. Container OS Libs Middlewa res conf. Apps conf.conf. Virtualization Isolation Container Runtime architecture microservices
  • 15. Présentation de Docker DIsposable Cattle vs. Pet build du container décrit dans Dockerfile déploiement par docker pull Docker est une technologie de packaging et déploiement Infra as Code Immutable Infrastructure : build & replace vs. upgrade
  • 16. Présentation de Docker DIsposable… oui mais… Par nature, un container éteint perd ses données. Persister les données est un sujet : ● utiliser un mécanisme applicatif (ELK) ● utiliser un stockage tiers (base de données, object storage) ● monter des volumes du host dans les containers Docker L’application embarquée dans le container doit être “distribuée” par nature (twelve- factor app) : ● tolérance à la panne (load-balancing) ● pas de session stickyness ● compatible blue/green La plateforme Docker doit être résiliente
  • 18. Présentation de Docker LIve Git style Images versionnées API à la git : ● diff ● commit ● tag ● history Images incrémentales multi-layered filesystem Image Build Run start / stop restartCommit
  • 19. Présentation de Docker SOcial Github style dépôts d’images Docker registries Dépôt public et communautaire Docker Hub Votes pour les images Images officielles / trusted Outil de build continu Outil de diagnostic continu Docker Security Scanning
  • 21. Prérequis Docker toolbox Download & install for Windows or Mac OS https://www.docker.com/products/docker-toolbox Check de l’installation Et votre premier docker run :-)
  • 22. Premier build de container Dockerfile jfo@lab ~/oxatest $ vim Dockerfile FROM debian MAINTAINER jfollenfant <jfo@oxalide.com> ADD ./hello.php / RUN apt-get update RUN apt-get -y install php5-cli CMD php /hello.php && echo $ENV jfo@lab ~/oxatest $ vim hello.php <?php echo “hello from Oxaliden”; ?> jfo@lab ~/oxatest $ docker build -t hello-oxa . [...] building image…. jfo@lab ~/oxatest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-oxa latest 7c3877476e31 About a minute 198 MB Sources Dockerfile + hello world en PHP Build d’une image ready to run. Déroulement des commandes du hands on disponible sur : http://tinyurl.com/j2yp857
  • 23. Pour aller plus loin Elasticsearch cluster dockerized $ docker run -d --name es-01 -p 9201:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-01” $ docker run -d --name es-02 -p 9202:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-02” $ docker run -d --name es-03 -p 9203:9200 -d elasticsearch:1.7.5 elasticsearch -Des.node.name=”es-03”
  • 24. Use it, break it, fix it, trash it, change it. Elasticsearch cluster dockerized Elasticsearch autodiscovery entre les 3 containers $ docker exec -it es-01 plugin install lmenezes/elasticsearch-kopf/v1.6.1 Accès depuis un navigateur : http://192.168.99.100:9201/_plugin/kopf Execution de commandes à l’intérieur d’un container en état RUNNING
  • 26. Comment ça marche ? Namespaces & cgroups A namespace wraps a global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. Namespaces cgroups (abbreviated from control groups) is a Linux kernel feature that limits, accounts for, and isolates the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes. Cgroups
  • 27. Comment ça marche ? Layered FS - Poupées russes ● Toutes les écritures sur le layer Container (R/W) ● Mutualisation des datas R/O entre les containers ● Copy-on-Write ● Réutilisation des layers avec le mot clé “FROM” dans les Dockerfiles
  • 28. Comment ça marche ? Layered FS
  • 29. Comment ça marche ? Layered FS - Exemple $ docker pull ubuntu:16.04 16.04: Pulling from library/ubuntu 6d28225f8d96: Downloading [=========================> ] 30.96 MB/48.35 MB 166102ec41af: Download complete d09bfba2bd6a: Download complete c80dad39a6c0: Download complete a3ed95caeb02: Download complete $ docker history ubuntu:16.04 IMAGE CREATED CREATED BY SIZE c5f1cf30c96b 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B <missing> 2 weeks ago /bin/sh -c sed -i 's/^#s*(deb.*universe)$/ 1.895 kB <missing> 2 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B <missing> 2 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 701 B <missing> 2 weeks ago /bin/sh -c #(nop) ADD file:ffc85cfdb5e66a5b4f 120.8 MB A comparer avec le Dockerfile : http://bit.ly/1WDZmHm
  • 30. Comment ça marche ? Layered FS
  • 31. Comment ça marche ? Build cache FROM ubuntu:16.04 RUN apt-get update && apt-get install -y curl ADD foo / CMD ["/bin/bash"] 3 layers, en cache FROM ubuntu:16.04 RUN apt-get update && apt-get install -y curl ADD foo / ADD bar / CMD ["/bin/bash"] Réutilisation des 2 premiers layers Création de 2 nouveaux layers Pour ADD et COPY : → Checksum du fichier
  • 32. Comment ça marche ? Build cache - Attention ! FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y curl CMD ["/bin/bash"] 3 layers, en cache FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y curl nginx CMD ["/bin/bash"] Réutilisation du layer “apt-get update” → apt cache pas à jour !
  • 33. Comment ça marche ? Networking Plugin par défaut : bridge → Interface docker0 ● Communication avec les autres containers du même host ● Links entre les containers Discovery : → Entrée dans le /etc/hosts → Variables d’environnement → Serveur DNS interne au Docker Daemon $ docker run -d --name db training/postgres $ docker run -d -P --name web --link db:db training/webapp python app.py
  • 34. Comment ça marche ? Networking - Multi-hosts Comment faire communiquer des containers sur des hosts différents ? The Docker Way : network plugin overlay $ docker network create --driver overlay multi-host-net $ docker run -itd --net=multi-host-net busybox ● Encapsulation du trafic ● backend k/v : Consul, etcd, Zookeeper The Not-Docker (i.e CoreOS/Kubernetes) Way : flanneld ● Un subnet par host ● Une IP par container/pod → pas de problème de ports ● Encapsulation par défaut, intégration GCP et AWS ● k/v backend : etcd
  • 35. Comment ça marche ? Volumes → Seul le container dbstore doit être persisté ! Comment gérer les données à l’intérieur d’un container ? $ docker run -P --name web -v /data/images:/var/www/mon_app/images mon_app $ docker run -P --name web -v /conf/app.conf:/var/www/mon_app/app.conf mon_app L’option --volumes-from permet de gérer les données comme un container : $ docker create -v /dbdata --name dbstore postgres /bin/true $ docker run -d --volumes-from dbstore --name db1 postgres $ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
  • 36. Comment ça marche ? Volumes - Multi-hosts Comment faire pour que la donnée suive le container (i.e haute disponibilité) ? Docker Plugins ! ● Le volume n’est pas forcément stocké en local sur le host. ● Il existe des plugins pour : ○ AWS EBS ○ Ceph ○ GlusterFS ○ NFS ○ NetApp ○ iSCSI ○ … Le plugin Flocker (https://github.com/ClusterHQ/flocker) regroupe un certain nombre de backends.
  • 38. Les nouvelles collaborations Build / Ship / Run DEV OPS Ephemeral Envs
  • 39. Les nouvelles collaborations Docker, pivot du DevOps… Dev (apps team) Ops (infra team) gère et opère ce qu’il y a dans le container build le container ne se préoccupe pas de la plateforme sur laquelle run le container fournit la plateforme hébergeant les containers on-demand gère et opère les plateformes hébergeant les containers gère la sécurité de la plateforme contre l’intrusion fournit des dépôts d’images durcies et prêtes à l’emploi gère la scalabilité et la multi- tenancy de la plateforme
  • 40. Cloud Service What we get… What we do… IaaS Infrastructure resources (compute / storage / network) VMs marketplace VM / network / storage provisionning CaaS Platform dedicated to container run Container marketplace Environment provisionning Container deployment (OS / middleware / app) PaaS Vertical stacks dedicated to programmation languages Vertical stack / middleware marketplace Environment provisionning Application deployment SaaS End-user services Use of services Les nouvelles collaborations IaaS, CaaS, PaaS, SaaS… Hardware / VM Linux Kernel Container OS Libs Middle wares conf. Apps conf.conf. Container OS Libs Middle wares conf. Apps conf.conf. Container Runtime Hardware Hypervisor VM OS Libs Middle wares conf. Apps Kernel HDW conf.conf. VM OS Libs Middle wares conf. Apps Kernel HDW conf.conf. IaaS PaaS SaaS CaaS PaaS
  • 43. Ecosystème Le bestiaire Docker Docker Engine expose l’API de gestion du container s’appuie sur containerd et runC depuis Docker 1.11 runC runC runC Docker Engine warden/garden des alternatives existent : ● Rocket chez CoreOS ● Garden chez CloudFoundry portée par la Linux Foundation
  • 44. Ecosystème Le bestiaire Docker Docker Compose décrit le provisionning d’un service composé de multiples containers gère les dépendances entre containers Docker Engine gestion limitée à un seul host préserve les données des volumes à la création des containers limite l’update de la stack aux seuls containers modifiés permet d’isoler de multiples envs. sur un même hôte
  • 45. Ecosystème Le bestiaire Docker Docker Machine décrit le provisionning de multiples hôtes Docker architecturé autours de plugins gère les principaux services IaaS et virtualisation (~25) utilisé au sein de Docker Toolbox gère le déploiement de clusters Docker Swarm
  • 46. Ecosystème Les dépôts Docker Hub dépôt public d’images Docker images officielles images de confiance (Notary) Mécanismes de vote Mécanismes de build continu Audit de sécurité (Nautilus) 4 registries comparées (Rancher) : http://goo.gl/eNomg4
  • 47. Ecosystème L’autodiscovery la configuration du container varie selon : ● l’env. (ex. : dev / prod) ● l’hôte (ex. : port, ip) ● la version (ex. : URI) ● le nb. d’instances (ex. : ASG) ● les autres containers (ex. : DB) injection de configuration au run : ● docker -e myVAR=’myValue’ ● docker compose configuration dynamique : ● stockage distribué ● résilient (au partitionnement réseau) ● API CRUD ● healthcheck ● accès DNS
  • 48. Ecosystème Les composants réseaux Smart load balancers HAproxy : No hot reload, rechargement de configurations via adapter consul Traefik : support multi backends natif ( etcd, consul, zookeeper, swarm… ) Advanced HTTP features SSL self managed, HTTP/2 Docker Engine Pilotage via API REST Gestion avancée du trafic graceful shutdown, retry request et coupe circuit
  • 49. Ecosystème L’orchestration Gestion d’une population (nombreuse) de containers : ● placement sur un hôte (dispo de ressources, affinité) ● élasticité ● fail-over (perte de l’hôte) ● fail-over (perte d’un container) ● dépendances (service multi- containers) ● exposition réseau du service Fleet
  • 51. Ecosystème Les solutions PaaS/CaaS refactoring des solutions de PaaS historiques émergence de pure players CaaS extension de solutions de clouds publics pour gérer les containers
  • 57. Workshop #4 - Docker, des tours dans le petit bassin… Références Slide decks : Arnaud Mazin et Adrien Blind (http://fr.slideshare.net/adrienblind/docker-redistributing-devops-cards-on-the-way-to-paas) Arnaud Mazin et Edouard Devouge - Orchestrator Feature Comparison (http://blog.octo.com/docker-en-production-la-bataille-sanglante-des- orchestrateurs-de-conteneurs/) Docker Survey 2016 (https://www.docker.com/survey-2016) Crédits graphiques : Google Images… http://techfree.com.br/2015/04/criacao-automatizada-de-imagens-docker-github-e-docker-hub/ http://blog.xebia.com/security-is-maturing-in-the-docker-ecosystem/ bestiaire Docker : Laurel (https://twitter.com/laurelcomics et https://bloglaurel.com/)
  • 58. Oxalide © 2015 – Documents confidentiels Ou contactez directement : Maxime KURKDJIAN – Directeur associé Tel : +33 1 75 77 16 58 / mku Sébastien LUCAS – Directeur associé Tel : +33 1 75 77 16 59 / slu@oxalide.com Siège social & NOC : 25 Boulevard de Strasbourg – 75010 Paris Tel : +33 1 75 77 16 66 e-mail : commercial@oxalide.com Oxalide © 2015 – Documents confidentiels