05/02/2015 par Mario Loriedo & Vincent Demeester
C'est une intro, prochaine session dans 1 mois
-
outil pour partager env de dev et env de prod (sysadmin) #devops: "build, ship and run" via conteneurs => + rapide, automatisation
-
supporté par Google Cloud, Amazon Web Service...
-
archi :
- client (command line) Unix & Windows
- démon (engine)
- index (registry)
-
isolation ("chroot on steroids") virtualisation partielle (donc plus légère)
-
versioning (images versionnées) + "héritage" des images (=> rebuilds rapides, stockage + économe DRY)
Docker :
- moins d'empreinte mémoire / images plus petites (pas de guest OS)
- moins d'OS utilisables (OS kernel partagé)
- moins sécurisé
- pas supporté sur Mac & Windows nativement (besoin de VM intermédiaire)
https://github.com/Zenika/NC-Docker-Decouverte.git
-
start a container interactively a remove it after exit docker run -it --rm debian /bin/bash
-
start a container in detached mode with port mapping docker run -d -p 80:8080 zenika/nodejs-sample-app:latest
-
lancer 50 conteneurs à partir de la même image: très faible conso mémoire (htop), tous les processes sont visibles (sécurité bof)
-
idem avec VMs via QEMU (hyperviseur léger): mémoire saturée avant d'arriver à 50, les processes sont isolés
aliases utiles : alias docker-tail-last="docker ps -ql | xargs docker logs -f" alias docker-stop-last="docker ps -ql | xargs docker stop" alias docker-stop-all="docker ps -q | xargs docker stop" alias docker-rm-all="docker ps -qa | xargs docker rm"
-
isoler les builds (cf. images Jenkins, JDK, etc...) => administration plus simple des serveurs de build (Jenkins avec plugin Docker) => les devs peuvent builder sur le poste (de la même façon)
-
environnement de dev (DB servers, external services) partagés => partage => versions multiples
-
tester dans des environnements différents (ex : Java 6 vs Java 7 vs..., MySql 5.6, 5.7 etc...)
-
tester une appli (ex : gitlab)
-
remplacer les gestionnaires de paquets (?!)
-
builder des projets (ex : lib Clojure liberator)
Construire une image ElasticSearch avec un plugin particulier