3. Plan de la soirée
Once upon a time...
Installation + distribution
Interconnexion de containers
Live demos
Tomcat dream architecture
Docker compose
Docker machine
Feedback
16. Docker :: Containers
Virtualisation d’environnement d’exécution
Processeurs
Mémoire vive
Réseau
Système de fichiers
Contraire de la virtualisation de machine
17. Full virtualization
Host hardware
Host OS
Hypervisor
Guest OS
virt.
App1
App2
App3
App1
App2
App3
Guest OS
virt.
VMDocker
containers
Host hardware
DockerEngine
App1
App2
App3
App4
App5
container
Comparaison
Kernel
18. And the winner is...
Great isolation but overhead
Less isolation but less overhead
Conclusion
22. Docker vs OpenVZ
Architecture
Docker sees a container as a
application/service
OpenVZ sees a container as a VPS
OpenVZ
Template for empty linux machine
Patched linux kernel
30. Différences entre images et containers
Une image est créé :
à partir d’un dockerfile
à partir d’un commit d’un container
Une image est un système de fichier en lecture seule
Un container est un ensemble de processus tournant
dans un système de fichier en lecture/écriture
Docker utilise le principe du COW pour démarrer très vite
les containers
34. Builder son image
Pour builder l’image
docker build -t demojug/tomcat .
Pour lancer un container à partir de l’image
docker run -d demojug/tomcat
docker run -it demojug/tomcat bash
35.
36. Best practices
Eviter d’installer trop de chose
Au mieux un processus par container
Minimiser le nombre de couches
Utiliser .dockerignore
Depuis peu, utilisez les LABEL
NO UPGRADE / NO BOOT INIT
DIVISEZ POUR REGNER
Utilisez vos propres images !
52. Host 2 OS
Docker EngineDocker Engine
Host 1 OS
Source
code
repository
ContA
Build
Push
Search
Pull
Run
Dockerfile
for A
Docker
image
registry
Image
A
CRÉATION, GESTION ET
DEPLOIEMENT
53. Système de cache
RUN apt-get install -y curl wget
RUN apt-get install -y wget curl
RUN apt-get update
ADD / COPY
docker build --no-cache ...
58. Dev / Test
Utiliser une CI pour construire les images
Utiliser les containers pour
Jouer les tests unitaires
Recréer l’environnement d’intégration pour les tests
Bénéfices
Avoir la garantie d’un environnement propre
à chaque lancement des tests
Avoir la possibilité de jouer toute l’intégration dans un
seul container