Docker Saison 1

Introduction


17/11/2016

Au programme



  • Qu'est-ce que Docker et pourquoi l'utiliser ?

  • Comment ça marche ?

  • Démo

Problématique

Monde de l'IT


Résultat = " The Matrix From Hell "


PROBLÉMATIQUE

Transport de marchandises avant 1960

Résultat : " Also a Matrix from hell " !


Solution : 

le conteneur de transport


Docker = Conteneur de transport d'application


Beaucoup plus simple !!


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.

Les conteneurs... c'est pas nouveau ! (LXC, OpenVZ...) 

MAIS

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


Origines





  • Licence : open-source
  • Première version : 13 mars 2013
  • Langage : GO
  • Créateur : Solomon Hykes

Pour quoi faire ?


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




=> Simplifie la vie du développeur... mais pas que !

"Le Saint-Graal du DevOps"

Quand un adminsys met un logiciel en production...

Afficher l'image d'origine

Par sa nature Docker assure que le conteneur utilisé en développement fonctionnera de la même manière en production.


Avant

Afficher l'image d'origine

MAINTENANT

Même unité de livraison


DEVs                     OPS*


*exploitant d'application/admin système

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

InstaLL Linux : Natif

  • Package manager (yum, apt-get...)
  • Distrib dédiée (CoreOS, RH Atomic, RancherOS...)

 

Afficher l'image d'origine
Afficher l'image d'origine
boot2docker = VM légère (27M)


 Toolbox

Install  Windows/MAC



démo !



Docker :

Un ECOSYSTEME COMPLET


Docker Compose

$ docker-compose up -d 

docker-compose.yaml



Docker compose


Docker Swarm



Docker Machine

IN THE NEXT EPISODE ... ?

  • Orchestration ?
    • Kubernertes
    • Swarm mode
  • Outils annexes ?
    • Rancher
    • Docker Datacenter
    • Prometheus





Merci pour votre attention !




Docker Saison 1 : Introduction aux conteneurs applicatifs

By guillaumedupin

Docker Saison 1 : Introduction aux conteneurs applicatifs

Docker

  • 806