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
" 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.
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...
Par sa nature Docker assure que le conteneur utilisé en développement fonctionnera de la même manière en production.
Avant
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
- 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
InstaLL Linux : Natif
- Package manager (yum, apt-get...)
- Distrib dédiée (CoreOS, RH Atomic, RancherOS...)
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
- Kubernertes
- Swarm mode
- 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