Introduction aux conteneurs applicatifs
Monde de l'IT
Résultat = " The Matrix From Hell "
Transport de marchandises avant 1960
Résultat : " Also a Matrix from hell " !
Docker = Conteneur de transport d'application
Beaucoup plus simple !!
Les conteneurs... c'est pas nouveau ! (LXC, OpenVZ...)
MAIS
=> 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.
Même unité de livraison
*exploitant d'application/admin système
Source : https://blog.docker.com/2016/03/containers-are-not-vms/
Architecture
image ? (~classe)
container ? (~objet)
cat centos6-base.tar | docker import - centos6-base
Dockerfile : Description d'une image
FROM BASEIMAGE:VERSION
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”]
En pratique
Ecriture d'un dockerfile
Exécution d'un conteneur :
FROM tomcat:8.0.32-jre8 # héritage d'une image de base
# Ajout de fichiers dans l'image
COPY server.xml /usr/local/tomcat/conf/
COPY target/webapp.war /usr/local/tomcat/webapps/
# Commande par défaut qui sera lancée à l'exécution
CMD ["service","tomcat","start"]
$> docker build -t montomcatamoi -f /path/to/Dockerfile
$> docker run [options] montomcatamoi
docker run ... <image>
docker service create --replicas=N <image>
$ docker-compose up -d
docker-compose.yaml