Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker / containers

Docker / containers

[FR] Support de présentation utilisé à $WORK pour présenter docker (avec démos au milieu via wetty, miam!). Source dispo sur demande, si ça intéresse quelqu'un je mettrai sur Github.

Avatar for Jean-Baptiste Barth

Jean-Baptiste Barth

May 27, 2014
Tweet

More Decks by Jean-Baptiste Barth

Other Decks in Technology

Transcript

  1. Principe des containers (1) • entre "virtualisation légère" et "chroot

    très très amélioré" • un ou plusieurs process isolés du reste du système, mais pas un système complet • plusieurs implémentations depuis longtemps: BSD Jails, Solaris Zones, Linux OpenVZ, Linux LXC • plus récemment: Docker 2
  2. Quelle utilisation ? • environnements à la demande type PaaS

    (Heroku) ou SaaS • mutualisation d'applications hétérogènes • tests unitaires • optimisation de coûts (Google) • gestion d'un pipe de développement → recette → préprod → prod • → la techno est à exploiter selon ce qu'on veut faire 4
  3. Docker (2) • "Docker est un projet open source qui

    automatise le déploiement d'applications dans des conteneurs logiciels." (wikipedia) • Projet opensource, 2013, écrit en Go • Très actif (sur github: 12k stars, 2k forks, 400+ contributeurs uniques) • A l'origine : • LXC + AUFS • fonctionnalités de dépôt (images) • client / serveur (APIs HTTP) 6
  4. LXC ? • LinuX Containers : https://linuxcontainers.org/ • Ensemble d'outils

    userland pour gérer des conteneurs: • Namespaces (ipc, uts, mount, pid, network and user), capabilities • Apparmor et SELinux ; politiques seccomp • Chroots (via pivot_root) • Control groups (cgroups) Sauf qu'on va pas utiliser ça : instable, insuffisant, API moisies, support distrib très variable, ... => remplacé depuis docker 0.9 par "libcontainer" qui fait la même chose, même plus, mais en clean 12
  5. AUFS (1) • filesystem intégré au noyau Linux • supporte

    les "unions" : /dir1 + /dir2 => /dir • supporte le copy-on-write • permet de faire des "couches de filesystems" (= layers) Sur les vieux noyaux (Redhat. Debian?) : remplacé par device-mapper 13
  6. Docker : les plus • mécanisme d'isolation intégré au noyau

    : sécurité++, complexité-- • moyen naturel, indépendant de la techno, pour mutualiser des applications • gestion fine des ressources si besoin (cgroups) • gestion des images (construction, dépôt, images dérivées, ...) • génération de conteneurs depuis ces images • couches ! upgrades / rollbacks facilités • API autour de tout ça • performances natives (cpu, mémoire, disque, réseau) 15
  7. Docker : les moins (2) • force à être discipliné

    (logs, layers, réseau, confs) • pas encore de gestion prod-ready et générique de la haute dispo : • process / ~chroot ! passer d'un serveur à l'autre n'est pas simple • à venir: CRIU • en attendant: VMs ou HA externe (LB, Heartbeat-likes) • quelques instabilités AUFS • couche réseau à étudier 17
  8. Docker : installation • sous Linux: packages système (deb/rpm): a

    p t - g e t i n s t a l l d o c k e r . i o • sous OSX: client natif, serveur via une VM proxy (Tiny Core Linux préinstallée, <10M) • sous Windows: via VirtualBox/Vmware Player 18
  9. Docker : usages ? • support Debian (à évaluer) •

    plateforme DNS ? → pour remplacer les vues ? • plateforme J2EE/PHP ? • <... votre idée ici ...> 23