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
" Docker est une solution permettant de standardiser le packaging et l'exécution de logiciels dans des environnements séparés (conteneurs) pouvant communiquer entre eux. "
Packager, Transporter et Démarrer des applications
Any App, Anywhere
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
- public (DokerHub)
- privé (entreprise)
- "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”]
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"]
$> 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
- 684