Skip to content

Instantly share code, notes, and snippets.

@nicokosi
Last active August 29, 2015 14:14
Show Gist options
  • Save nicokosi/f1e5779674bab812cebd to your computer and use it in GitHub Desktop.
Save nicokosi/f1e5779674bab812cebd to your computer and use it in GitHub Desktop.
Notes durant le Docker nightclazz découverte de Zenika, le 05/02/2015

Docker nightclazz découverte

05/02/2015 par Mario Loriedo & Vincent Demeester

C'est une intro, prochaine session dans 1 mois

Intro

  • 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 vs Virtual Machines

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)

1er Hands-on

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"

Cycle de vie d'un conteneur

Patterns simples

  • 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)

2ème hands-on

Construire une image ElasticSearch avec un plugin particulier

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment