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. 4.
  2. 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
  3. 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
  4. 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
  5. 10.

    ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ?
  6. 11.
  7. 12.
  8. 13.
  9. 14.
  10. 15.
  11. 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
  12. 19.

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

    de Bin/Lib App App Conteneur Conteneur
  13. 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
  14. 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
  15. 23.
  16. 24.

    Docker Orienté « Développeur »
 Mécanisme de packaging, versioning Partage

    / Ré-utilisation
 import/export, registry, Docker Hub API
 Extension / Integration, Ecosystème
  17. 25.
  18. 29.

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

    apt-get install nginx nginx MyAPP nginx
  19. 30.

    Volume •Filesystem externe au conteneur
 Permet la persistance des données

    •Partageable entre plusieurs conteneurs •Extensible par des plugins 
 NFS, AWS EBS, …
  20. 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, ..
  21. 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
  22. 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
  23. 36.
  24. 40.

    Node 1 Node 3 Node 2 Serveur Swarm Cluster Swarm

    Docker API Docker API Docker API Docker API