Pro Yearly is on sale from $80 to $50! »

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,

6ae7853fabc4555580a36ad6e17feab7?s=128

Gildas Cuisinier

March 15, 2016
Tweet

Transcript

  1. Gildas Cuisinier

  2. Gildas Cuisinier [☰] Sfeir Benelux @gcuisinier

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

  4. None
  5. 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
  6. Pourquoi Docker ?

  7. « Chez moi, ça marche ! »

  8. 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
  9. 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
  10. ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ?
  11. Analogie

  12. None
  13. None
  14. None
  15. None
  16. Qu’est-ce que Docker?

  17. Container vs VM

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

    de Bin/Lib App App Conteneur Conteneur
  20. 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
  21. 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
  22. Docker ? Une révolution ?!

  23. Container Concept pas vraiment neuf
 Solaris Zone, BSD Jails, LXC

    Orienté SysAdmin
 Donc complexe ;-)
  24. Docker Orienté « Développeur »
 Mécanisme de packaging, versioning Partage

    / Ré-utilisation
 import/export, registry, Docker Hub API
 Extension / Integration, Ecosystème
  25. Docker Linux
 Engine Windows
 boot2docker + cli
 Microsoft/Docker, work in

    progress -> Windows 10 OSX
 boot2docker + cli
  26. Les concepts

  27. Fonctions du Kernel CGroup + Namespaces
 
 Contrôle des resources

    (CPU, Mémoire)
 Isolation

  28. Layers Copy on Write
 AuFS, Device Mapper, BTRFS, Overlayfs
 


    Permet des démarrages rapides
  29. Layers ubuntu + PLAY_SDK Play SDK + MyApp.zip apt-get update

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

    •Partageable entre plusieurs conteneurs •Extensible par des plugins 
 NFS, AWS EBS, …
  31. 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, ..
  32. Dockerfile

  33. Request-an-Inbox Dockerfile FROM java:8-jdk MAINTAINER Gildas Cuisinier<cuisinier.g@sfeir.lu> 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
  34. Docker Compose anciennement Fig

  35. 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
  36. Partage

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

  38. Docker Registry

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

  40. Node 1 Node 3 Node 2 Serveur Swarm Cluster Swarm

    Docker API Docker API Docker API Docker API
  41. Questions ?

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