Fork me on GitHub

Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari, or Firefox 10.

Présentation
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

Un peu d'Histoire : le synopsis


  1. Bio Solomon Hykes
  2. Origine du projet
  3. La start-up qui aurait du être française
  4. Choix du Go
  5. Evolution éclair de l'adoption
  6. Un soupçon de stats
Solomon Hykes
docker logo

Un peu d'Histoire : l'ère dotCloud


  1. 2006 - Solomon Hykes diplômé de l'Epitech
  2. 2008 - création de dotCloud avec Sébastien Pahl
  3. Aucun finacement trouvé parmi les business angels français
  4. Le 1er virage : un changement géographique
  5. 2010 - Incubation au sein de Y Combinator
  6. Les start-up de Y Combinator comme early adopters
  7. "Go, c'est un peu la Suisse des langages modernes"
  8. 2011 - implantation dans la Silicon Valley
  9. Demandes récurrentes d'accès à des briques légo du socle dotCloud
dotcloud era logo
docker logo

Un peu d'Histoire : l'ère Docker


  1. Le 2ème virage : un changement stratégique
  2. Modularisation des services internes du PaaS doCloud
  3. 2013 - ouverture de Docker à l'open source
  4. Mars 2013 - lancement de Docker Hub
  5. Septembre 2013 - Red Hat l'intègre à OpenShift
  6. Fin 2014 - Adoption par Microsoft, Google, Amazon, IBM
  7. Septembre 2015 - 40% des usages en production
  8. Novembre 2015 - 1.2 milliards de pulls
  9. Février 2016 - 2 milliards de pulls / 7000 par min
  10. Democratisation des PaaS et Caas privés
docker era logo
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

Les concepts fondateurs


  1. L'allégorie du container
  2. Le slogan devOPS
  3. Le container linux LXC
  4. En résumé
docker logo

Concepts fondateurs : L'allégorie du container


Matric from hell soft world
docker logo

Concepts fondateurs : L'allégorie du container


Matric from hell real world
docker logo

Concepts fondateurs : L'allégorie du container


Solution to Matric from hell real world
docker logo

Concepts fondateurs : L'allégorie du container


Matric from hell real world solved
docker logo

Concepts fondateurs : L'allégorie du container


Soution to Matric from hell soft world
docker logo

Concepts fondateurs : L'allégorie du container


Matric from hell soft world solved
docker logo

Concepts fondateurs : L'allégorie du container

Double abstraction du container


Double abstraction du container
docker logo

Concepts fondateurs : L'allégorie du container

Double abstraction du container Docker


Double abstraction du container Docker
docker logo

Concepts fondateurs : Le slogan devOPS

"Build, Ship, Run, Any App Anywhere"

Build ship run Slogan docker
docker logo

Concepts fondateurs : Le slogan devOPS

"Build, Ship, Run, Any App Anywhere"


Build ship run
docker logo

Concepts fondateurs : Le container linux LXC

Container vs VM

Container vs VM
  1. Une technologie Linux-only
  2. Le kernel linux de l'hôte partagé avec les containers
  3. Un container = un processus linux isolé sur un hôte linux
docker logo

Concepts fondateurs : En résumé


  1. Un mode de virtualisation léger et rapide
  2. Initialement basé sur les containers linux LXC

  3. Une execution isolée
  4. Avec maitrise des flux (port, montage disque, réseau)

  5. Un mécanisme de gestion de configuration
  6. Avec des scripts d'installation versionnés

  7. Un outil de déploiement sur étagère simple et intégré
  8. Avec un dépôt central des images à installer
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

Une adoption unanime : l'ecosystème partenaire


Liste des partenaires
docker logo

Une adoption unanime : Docker en chiffres

Evolution du nombre de pulls sur le Docker Hub


Nombre de pulls sur Docker Hub
docker logo

Une adoption unanime : Docker en chiffres

Les bénéfices quantifiés


Docker benefits
docker logo

Une adoption unanime : Les leviers d'adoption

Les raisons stratégiques d'adoption par les entreprises


  1. Evolution des applications vers l'architecture Microservices
  2. Réduction du Time To Marker
  3. Optimisation des ressources et du nombre de VMs
  4. Amélioration de la gestion de l'environement opérationnel
  5. Alignement DevOps
  6. Portabilité applicative
  7. Passage au cloud
  8. Modernisation d'applications lecacy
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

Les paradigmes promus par Docker


  1. Les Microservices / Architecture WOA
  2. Polyglot Programming / Polyglot Persistence
  3. devOPS
  4. Infrastructure as code
  5. Immutable infrastructure
  6. Continuous Deployment
  7. Pets vs Cows
  8. Phoenix servers
  9. Self healing
  10. Dynamic partionning
  11. Scale cube
docker logo

Les paradigmes promus : Les Microservices

Une définition de James Lewis et Martin Fowler


In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.


Martin Fowler
docker logo

Les paradigmes promus : Les Microservices

Martin Fowler, "Common characteristics of this new architectural style"


  1. Componentization via Services
  2. Organized around Business Capabilities
  3. Products not Projects
  4. Smart endpoints and dumb pipes
  5. Decentralized Governance
  6. Decentralized Data Management
  7. Infrastructure Automation
  8. Design for failure
  9. Evolutionary Design
Martin Fowler
docker logo

Les paradigmes promus : Les Microservices

Un changement d'architecture qui implique de s'adapter

Monolith to Microservices
  1. Vers une augmentation croissante du nombre de services
  2. du nombre de déploiements
  3. et donc de la charge d'activité sur les OPS
docker logo

Les paradigmes promus : Les Microservices

Les compromis à trouver


Microservices trade-offs Martin Fowler
docker logo

Les paradigmes promus : Les Microservices

Les défits à relever


  1. Comment gérer l'explosion du nombre de services, de déploiements, de versions ?
  2. Comment faciliter les nombreux déploiements ?
  3. Quelle startégie de versionning applicatif ?
  4. Comment adminsitrer pléthore de technologies et bases de données ?
docker logo

Les paradigmes promus : L'esprit Polyglotte

Polyglot Persistence and Programming : The right tool for the job


Polyglot Persistence
  1. Un langage de programmation adapté à chaque situation
  2. Un type de base approprié à l'usage de la donnée
Martin Fowler
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

De nouvelles problématiques


  1. Discovery backend
  2. Serice discovery
  3. Leader election
  4. Data volume container
  5. Volume des images
  6. ...
docker logo

Le plan


  1. Un peu d'Histoire
  2. Les concepts fondateurs
  3. Une adoption unanime
  4. Les paradigmes promus par Docker
  5. De nouvelles problématiques
  6. Un déballage de la Toolbox
  7. La stratégie Docker Inc
  8. L'écosystème Docker
  9. Quelques perspectives
docker logo

La Toolbox


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm pour orhcestrer l'essaim
  7. La Machine
  8. Le Kitematic
docker toolbox
docker logo

La Toolbox : Une présentation


  1. Briques Open Source sous licence Apache V2
  2. Développées en Go ou python pour les plus anciennes
  3. Basées sur des API REST JSON
  4. le mantra Docker: “batteries included but swappable"
docker toolbox
docker logo

La Toolbox : Une présentation

Un lexique

Container : instance runtime d'une image

Image : template de container basé sur l'union de couches de filesystems

Registry : dépôt d'images Docker accessibles par l'API Registry

Dockerfile : fichier d'instructions pour la construction d'une image

Docker host : VM basée sur un OS Docker-ready

Docker client : CLI permet d'exécuter des commandes Docker

Docker daemon : process exécutant les commandes Docker

Compose : outil de configuration d'une architecture multi-containers à partir d'un fichier yaml

Swarm : outil de gestion d'un cluster de Docker Hosts comme un seul Docker host virtuel

Machine : outil de création de Docker hosts en local, sur un data center ou sur un cloud provider

docker logo

La Toolbox : Une présentation

L'environnement d'execution Linux


docker host
docker logo

La Toolbox : Une présentation

Le cycle de vie


docker lifecyle
docker registry

La Toolbox : La Registry comme écrin


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker registry
docker registry

La Toolbox : La Registry comme écrin

Qu'est-ce que la Registry ?


  1. Projet Open source Distribution sous licence Apache V2
  2. Développée en Go
  3. Un lieu central ou stocker et distribuer des images Docker
  4. Stocke les différentes couches d'une image
  5. Stocke la description permettant de construire une image
  6. Expose l'API Registry aux clients Docker
  7. En V2 emet des notifications webhook (autoredeploy )

  8. Docker Hub: registry SaaS (images publiques gratuites )
  9. Docker Trusted Registry: version on-premise de Docker Hub
docker registry

La Toolbox : La Registry comme écrin

Quelques astuces pour bien choisir son image


  1. Vérifier soigneusement le contenu du Dockerfile
  2. Eviter les images sans github associé
  3. Préférer une image légère : voir l'onglet tag pour la taille
  4. Plébiscitée: stars/downloads/forks de DockerHub/GitHub
  5. Maintenue: repository automated et dates des tags
  6. Privilégier les images officielles (après portage sur Alpine)

  7. Embauche de Natanael Copa créateur d'Alpine
  8. Février 2016 : Hykes annonce le portage des images officielles sur Alpine
docker plus alipine
docker logo

La Toolbox : L'Engine au cœur de l'écosystème


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker toolbox
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Qu'est-ce que l'Engine ?


  1. Projet Open source Docker sous licence Apache V2
  2. Développé en Go
  3. Composé d'un client CLI pour exécuter des commandes
  4. Au travers de l'API REST Engine
  5. Exécutées par le daemon du Host

  6. Les commandes permettent de
  7. Gérer des images
  8. Gérer des containers
docker engine
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Le workflow des commandes de base

docker commands
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Quelques astuces pour se simplifier la vie


docker build -t myImage . : nommer/tagger ses images
docker rmi $(docker images -aq) : supprimer toutes les images

docker run --name myName myImage : nommer ses containers
docker ps -a : afficher tous les containers
docker rm -f myName : arrêter et supprimer son container en une fois
docker rm $(docker ps -aqf status=exited) : supprimer les containers arrêtés

docker exec -it myName /bin/bash : entrer dans un container démarré
docker logs -tf myName : afficher les logs d'un container
docker logo

La Toolbox : Un Dockerfile à son Image


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker toolbox
docker logo

La Toolbox : Un Dockerfile à son Image

Qu'est-ce qu'une image ?


  1. Un ensemble de commandes d'installation
  2. Identifié par un tag organisation/nom:tag
  3. Un empilement de couches de filesystems
  4. Se configure avec un fichier Dockerfile
  5. Qui peut utiliser le contenu du répertoire du Dockerfile
  6. Qui doit se trouver dans un répo git
docker toolbox
docker logo

La Toolbox : Un Dockerfile à son Image

Syntaxe d'un Dockerfile


FROM <image> : image utilisée comme base de la future image
MAINTAINER <name> : auteur de l'image
ENV <key> <value> : variable d'environnement
RUN <command> : exécute la commande d'installation sur l'image
COPY <src> <dest> : ajoute un fichier local dans l'image
VOLUME ["/<dir>"] : répertoire externe monté au démarrage
EXPOSE <port>] : port réseau exposé par le conteneur
CMD ["executable", "param1",...] : commande lancée au démarrage

WORKDIR ["/<dir>"] : devient le répertoire interne courrant
USER <user> : utilisateur Linux utilisé lors du démarrage
ONBUILD <command> : commande executée dans l'image fille
ARG <name>[=<default value>] : argument utilisé lors du build (http_proxy)
LABEL <key>=<value> : étiquette associée à l'image
docker logo

La Toolbox : Un Dockerfile à son Image

Un example de Dockerfile


# Se base sur l'image ubuntu version 14.04
FROM docker-registry.valid.appli-gestion.nc/ubuntu:14.04
MAINTAINER DTSI-Infras
COPY config/proxy-dtsi /etc/apt/apt.conf.d/
RUN apt-get update & \
    apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
VOLUME ["/usr/share/nginx/html/"]
EXPOSE 80
CMD ["nginx"]
docker logo

La Toolbox : Un Dockerfile à son Image

Quelques astuces pour bien constuire son Dockerfile


  1. Préciser la version de l'image de base
  2. Choisir une image de base légère (Alpine)
  3. Supprimer les caches d'installation
  4. N'installer que le strict nécessaire
  5. Placer en haut les instructions les plus longues
  6. Placer en bas les instructions qui changent le plus
  7. Regrouper les instructions cohérentes
  8. En séparant les instructions sur plusieurs lignes
  9. Utiliser un .dockerignore
  10. Ne lancer qu'un process par container
docker logo

La Toolbox : Le Compose pour la palette


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker compose
docker compose

La Toolbox : Le Compose pour la palette


  1. Projet Open source Compose sous licence Apache V2
  2. Développée en Python

  3. Anciennement Fig développé par Orchard
  4. Juillet 2014 Orchard acquis par Docker

  5. Facilite le lancement des containers
  6. Nous épargne les docker run sans fin
  7. Permet de composer plusieurs containers
  8. Se configure avec un fichier yaml
docker compose
docker compose

La Toolbox : Le Compose pour la palette

docker compose commandes
docker compose

La Toolbox : Le Compose pour la palette

Syntaxe d'un docker-compose.yml


image: <image> : image utilisée pour lancer le container
build: /<dir> : pour construire l'image au préalable
dockerfile: <Dockerfile-alternate> : nom alternatif de Dockerfile
links: -<linkName> : liens vers d'autre containers
ports: -<host:container> : mapping de ports entre host et container
volumes: -<host:container> : volumes montés entre host et container
command: <command> : commande lancée au démarrage
docker compose

La Toolbox : Le Compose pour la palette

Un example de docker-compose.yml



hello-world:
     build: .
     volumes:
       - ~/tuto-docker/webapp/:/usr/share/nginx/html/
     ports:
       - 8080:80

Laissons voguer nos containers vers le soleil couchant


docker sunset

Merci à tous, suite au prochain épisode


docker the end
docker swarm

La Toolbox : Le Swarm


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker swarm
docker logo

La Toolbox : La Machine


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
docker machine
docker logo

La Toolbox : Le Kitematic


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
  5. Le Compose pour la palette
  6. Le Swarm
  7. La Machine
  8. Le Kitematic
kitematic
docker logo

La Toolbox: Execution Plateform


docker lifecyle
docker logo

La stratégie commerciale et la standardisation


  1. Offre commerciale
  2. Plumbing
  3. Open Std.
docker logo

L'écosystème Docker


  1. Discovery backend : Etcd, Zookeeper, Consul
  2. Service discovery : Registrator
  3. Plugins volume : Flocker
  4. Plugins network : Flannel, Weave
  5. Log : Logspoud
  6. Cluster : Mesos
  7. Orchestration : Kubernetes, Tutum/Docker cloud, Shippyard, Tsuru; Rancher
  8. Hosts : CoreOS, Atomic, Boot2Docker
docker logo

Quelques perspectives


  1. Unikernels
  2. Docker Beta for Mac and for Windows

Utiliser la barre espace ou les flèches pour se déplacer