Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WaJUG - Introduction à Docker

WaJUG - Introduction à Docker

Slides de ma présentation Docker du WaJUG ( http://www.meetup.com/fr-FR/wajug-be/events/228800508/ )

- Pourquoi Docker ?
- Qu'est-ce que Docker?
- Container vs VM
- Concepts : Image, Container, LayerFS, Volume, Network, DockerFiles, Docker Compose, Swarm,

Gildas Cuisinier

March 15, 2016
Tweet

More Decks by Gildas Cuisinier

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ?
  5. 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
  6. Container Server Host OS Bin/Lib App avec des vrais morceaux

    de Bin/Lib App App Conteneur Conteneur
  7. 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
  8. 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
  9. Docker Orienté « Développeur »
 Mécanisme de packaging, versioning Partage

    / Ré-utilisation
 import/export, registry, Docker Hub API
 Extension / Integration, Ecosystème
  10. Layers ubuntu + PLAY_SDK Play SDK + MyApp.zip apt-get update

    apt-get install nginx nginx MyAPP nginx
  11. Volume •Filesystem externe au conteneur
 Permet la persistance des données

    •Partageable entre plusieurs conteneurs •Extensible par des plugins 
 NFS, AWS EBS, …
  12. 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, ..
  13. Request-an-Inbox Dockerfile FROM java:8-jdk MAINTAINER Gildas Cuisinier<[email protected]> 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
  14. 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
  15. Node 1 Node 3 Node 2 Serveur Swarm Cluster Swarm

    Docker API Docker API Docker API Docker API