micro-services 

Docker Saison 2

Simplifier l'orchestration d'applications 

13/01/2017

Au programme


  • Dans l'épisode précédent...

  • Nouveautés de la version 1.12 

  • Introduction à Docker-Machine 

  • Démo 




Previously on Docker...


Définition

Afficher l'image d'origine


         " Docker est une solution permettant de standardiser le packaging et l'exécution de logiciels dans des environnements séparés (conteneurspouvant communiquer entre eux. "







PackagerTransporter et Démarrer des applications

Any App, Anywhere

OBJECTIF

Minimiser le temps et les infrastructures entre le développement, les tests, le déploiement et l'utilisation en production.

Propriétés Clés de DOCKER

  • Légèreté
  • Portabilité ("Build once, Run everywhere")
  • Jetabilité ("Cattle Vs Pet" )
  • Versionning des images (~GIT), héritage
  • Social (open source, repo public d'images...)
  • API REST
  • Ecosystème complet (outils, plateforme)


=> standard qui ouvre le monde du conteneur à tous


Pour quoi faire ?


  • Plate-forme de développement souple
  • Test rapide d'application
  • DevOps
  • Intégration continue
  • Déploiement automatisé




=> Simplifie la vie des devs et des ops !

Comment ça marche ?

"VIRTUALISATION LIGHT "




Concepts différents : on virtualise des "services" plutôt que des "OS"
(sous le capot : namespaces + cgroups + UFS)

CONTENEUR

Analogie




Source : https://blog.docker.com/2016/03/containers-are-not-vms/

  VM

Architecture


VOCABULAIRE

layer  ?
Ensemble de fichiers
Analogie avec un "commit"

image  ? (~classe)
Ensemble de layers superposés

Read-only !

container  ? (~objet)
"Instanciation" d'une image

READ-WRITE !

MULTI-LAYER

Union File System

  • Chaque 'layer' (couche) du FS est monté sur les layers précédents (héritage)

  • Le premier 'layer' est l'image de base (debian, ubuntu, busybox, fedora, centos, etc )

  • Chaque layer 'read-only' est une image (un layer n'est qu'un ensemble de fichiers et répertoires !)

  • La couche la plus haute est la seule en 'read-write' : c'est le conteneur !

MULTI-LAYER


Les images

  • "docker search" sur un registry
  • "docker build" à partir d'un Dockerfile
  • "docker commit" sur un conteneur modifié
  • "docker import" d'une arbo de base :
    cat centos6-base.tar | docker import - centos6-base

Dockerfile : Description d'une image

FROM BASEIMAGE:VERSION
MAINTAINER Thales.COM "USER@THALES.COM"
ENV MYVAR=”VALUE”
RUN YUM INSTALL PKGS1 , PKGS2 -Y
RUN MKDIR -P /WORKDIR/LOG
COPY ./CONF/APPLICATION.CONF /WORKDIR/APP.CONF
ADD WWW.ARCHIVE.COM/MYARCHIVE.TAR.GZ /WORKDIR/
EXPOSE 9000
VOLUME [“/WORKDIR/LOG”]
WORKDIR [“/WORKDIR”]
USER MYUSER
ENTRYPOINT [“/BIN/BASH”]
CMD [“ECHO” , “HELLO WORLD”] 


Dockerfile 








Exécution d'un conteneur :

FROM tomcat:8.0.32-jre8
MAINTAINER Guillaume Dupin "guillaume.dupin.external@irt-saintexupery.com"
COPY server.xml /usr/local/tomcat/conf/COPY target/webapp.war /usr/local/tomcat/webapps/# CMD ["service","tomcat","start"]
Build de l'image : 

$> docker build -t montomcatamoi -f /path/to/Dockerfile


 $> docker run -d [options] montomcatamoi


 

EN PRATIQUE

Orchestration

(gestion de conteneurs en multi-machines)


Composante centrale pour les applications distribuées
 

Avant...

Orchestration

What's new ?

  • 'Swarm Mode' embarqué dans Engine => orchestration native

  • Création ultra-simple d'un cluster !

BIenvenue aux "Services" !


  • Avant : "je démarre 1 conteneur" = TRANSACTIONNEL
 
docker run ... <image>
  • Après : "je décris l'état désiré d'1 service" : DECLARATIF !!
docker service create --replicas=N <image>
    • Le système garantit le respect de l'état désiré
    • Si problème : le système corrige tout seul !



Création de service

http routing mesh

Scaling power


 docker service scale my-svc=10

Docker :

Un ECOSYSTEME COMPLET


Docker Machine


Docker Compose

$ docker-compose up -d 

docker-compose.yaml



Docker compose


Nouveautés : format V3

  • deploy


  • secrets

  • ressources
  • restart_policy

Nouveautés : Format V3

Déploiement d'une stack sur swarm en une commande !

 docker stack deploy -f docker-compose.yml my_stack


démo !



IN THE NEXT EPISODE ... ?

    Coding Dojo : Venez nombreux !







      Questions ?






      Docker Saison 2 : Simplifier l'orchestration d'applications micro-services

      By guillaumedupin

      Docker Saison 2 : Simplifier l'orchestration d'applications micro-services

      Docker

      • 679