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. Gildas Cuisinier

    View Slide

  2. Gildas Cuisinier
    [☰] Sfeir Benelux
    @gcuisinier

    View Slide

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

    View Slide

  4. View Slide

  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

    View Slide

  6. Pourquoi Docker ?

    View Slide

  7. « Chez moi, ça marche ! »

    View Slide

  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

    View Slide

  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

    View Slide

  10. ? ? ? ?
    ? ? ? ?
    ? ? ? ?
    ? ? ? ?

    View Slide

  11. Analogie

    View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. Qu’est-ce que
    Docker?

    View Slide

  17. Container vs VM

    View Slide

  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

    View Slide

  19. Container
    Server
    Host OS
    Bin/Lib
    App
    avec des vrais
    morceaux de
    Bin/Lib
    App App
    Conteneur Conteneur

    View Slide

  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

    View Slide

  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

    View Slide

  22. Docker ?
    Une révolution ?!

    View Slide

  23. Container
    Concept pas vraiment neuf

    Solaris Zone, BSD Jails, LXC
    Orienté SysAdmin

    Donc complexe ;-)

    View Slide

  24. Docker
    Orienté « Développeur »

    Mécanisme de packaging, versioning
    Partage / Ré-utilisation

    import/export, registry, Docker Hub
    API

    Extension / Integration, Ecosystème

    View Slide

  25. Docker
    Linux

    Engine
    Windows

    boot2docker + cli

    Microsoft/Docker, work in progress -> Windows 10
    OSX

    boot2docker + cli

    View Slide

  26. Les concepts

    View Slide

  27. Fonctions du Kernel
    CGroup + Namespaces


    Contrôle des resources (CPU, Mémoire)

    Isolation


    View Slide

  28. Layers
    Copy on Write

    AuFS, Device Mapper, BTRFS, Overlayfs


    Permet des démarrages rapides

    View Slide

  29. Layers
    ubuntu
    + PLAY_SDK
    Play SDK
    + MyApp.zip apt-get update
    apt-get install nginx
    nginx
    MyAPP
    nginx

    View Slide

  30. Volume
    •Filesystem externe au conteneur

    Permet la persistance des
    données
    •Partageable entre plusieurs
    conteneurs
    •Extensible par des plugins 

    NFS, AWS EBS, …

    View Slide

  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, ..

    View Slide

  32. Dockerfile

    View Slide

  33. Request-an-Inbox Dockerfile
    FROM java:8-jdk
    MAINTAINER Gildas Cuisinier
    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

    View Slide

  34. Docker Compose
    anciennement
    Fig

    View Slide

  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

    View Slide

  36. Partage

    View Slide

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

    View Slide

  38. Docker Registry

    View Slide

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

    View Slide

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

    View Slide

  41. Questions ?

    View Slide

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

    View Slide