VT2018 Moby

=Auteur=
 * Nom : Lepage Tim
 * Sujet : Moby Project

=Résumé= Moby est un framework open source créé par Docker pour créer et assembler des conteneurs spéialisés facilement. Le principe repose sur des blocs "Lego" facilement imbricable et hautement modulaires.

Sur cette page nous détaillerons d'abord le principe de conteneur, notemment les conteneurs Docker puis nous nous intéresserons aux apports de Moby sur ces conteneurs puis nous finirons par discuter des avantages et inconvénients d'une telle technologie. Une démo est aussi disponible ici

Mots clés

 * Container
 * Docker
 * LinuxKit

=Abstract= Moby is an open source framework created by Docker to create and assemble specialized containers easily. Moby uses a system of "Lego blocs" that are easily nestable and highly modular.

On this web page we will first talk about Docker containers, then we will look at what Moby brings to the table and eventually we will discuss about the advantages and drawbacks of such a technology. A demonstration is available here

=Synthèse= Moby est un framework open source créé par Docker. Pour comprendre à quoi sert Moby et comment celui ci fonctionne, nous avons besoin de faire un rapide rapel sur ce qu'est un conteneur et plus particulièrement un conteneur Docker.

Qu'est ce qu'un conteneur Docker
Un conteneur est un espace virtuel dans lequel on peut faire tourner des applications de manière complètement isolées. Par opposition aux machines virtuelles (ancêtre des conteneurs), les conteneurs n'ont pas d'hyperviseur et les applications dans différents conteneurs peuvent tourner complètement indépendamment les unes des autres.



Ceci assure un contexte d’exécution contrôlable, on sait que si l'application tourne sur la machine de développement, elle tournera également de la même manière sur toutes les autres machines et serveurs distants.

Les étapes de création d'un conteneur Docker sont les suiantes:
 * Création d'un Dockerfile, ce fichier contient une liste d'instructions nécessaires à la construction de l'image. Docker propose sur le docker hub une multitude de Dockerfiles pré construits pour différents types d'application (Ubuntu, Php, Java, etc...).
 * A partir de ce Dockerfile on construit une image Docker, celle ci représente une application destinée à être exécutée sur un conteneur.
 * On fait tourner l'image dans un conteneur.

Docker propose 3 types de services:
 * Docker Community Edition
 * Docker Entreprise Edition
 * Moby

Dans la suite nous allons nous intéresser à Moby.

Qu'est ce que Moby
Moby est un framework open source pour assembler des conteneurs facilement. Ce projet comporte trois types de composants:
 * Une bibliothèque de composants backend conteneurisés (ex: composant sécurité, authentification, etc...). Moby en propose environ 80, ces conteneurs sont maintenus par Docker et libre d'utilisation.
 * Un framework pour assembler les composants dans une plateforme de conteneurs autonome. Moby présente son framework comme une plateforme d'assemblage de composants "Lego" facilement imbricables et hautement modulaires.
 * Un assemblage de référence, appelé Moby Origin afin de tout bien coordonner.



Qui utilise Moby
Le framework a été lancé début 2017 et très peu de développeurs semblent s'intéresser à son utilisation. Seuls 19 topics Stackoverflow ont 'Moby' en tag et parmis ceux ci la grande majorité ne traitent pas de Moby en particulier mais de Docker CE et EE qui se basent sur Moby. Le mot 'Moby' apparait donc dans les messages d'erreur de ces outils.

Moby possède également un forum officiel dédié qui recense 57 posts dont la moitié sont des récapitulatifs d’événements autour de Docker et parmi la moitié restante, 50% des posts demeurent sans réponse.

Il semblerait donc que la majorité des développeurs ont délaissé ce framework au profit de Docker CE et Docker EE. Docker de son côté à déclaré vouloir faire de Moby une plateforme de recherche et d'expérimentations sur les conteneurs, ce qui explique sa faible utilisation.

Moby est recommandé pour :
 * Customiser et patcher le build Docker
 * Les personnes souhaitant créer un système de conteneurs
 * Les personnes qui souhaitent faire des expérimentations poussées avec les conteneurs

Moby est NON recommandé pour :
 * Les développeurs cherchant un moyen facile de faire tourner leur application dans des conteneurs (Docker CE est recommandé pour cela)
 * Les entreprises cherchant une plate-forme de conteneurs “ready to use” et commercialement prête (Docker EE est recommandé pour cela)
 * Les développeurs inexpérimentés avec les conteneurs en raison de sa faible documentation et de sa complexité à prendre en main.

=Démonstration=

Installation
Pour cette démonstration il est nécessaire d'avoir installé
 * Go
 * Docker
 * Moby
 * LinuxKit

Execution
La démonstration vise à se servir de LinuxKit et Moby pour assembler une version minimale de Linux.

1.Créer un script shell contenant les étapes ci dessous



2.Executer ce fichier

Cela va installer toutes les dépendances necessaire

3.Accéder au dossier linuxkit et build l'image avec Moby $ moby build linuxkit.yml

Cette commande va chercher un kernel Linux, y ajoute tous les composants mentionnés dans le fichier .yml (voir ci-après) et construit une version minimale de Linux.



4.Executer l'image construite juste avant $ linuxkit run linuxkit



5.On peut maintenant executer des commandes linux basiques dans cette machine virtuelle

=Références=
 * https://mobyproject.org/
 * https://blog.docker.com/2017/04/introducing-the-moby-project/
 * https://www.developpez.com/actu/132581/Docker-annonce-la-creation-du-projet-open-source-Moby-qui-permet-de-creer-et-partager-des-systemes-de-conteneurs/
 * https://www.mirantis.com/blog/ok-i-give-up-is-docker-now-moby-and-what-is-linuxkit/
 * https://blog.docker.com/2017/04/introducing-the-moby-project/
 * https://medium.com/aishik/getting-started-with-linuxkit-and-moby-project-ff7121c4e321
 * https://www.blaize.net/2017/06/quick-start-for-moby-and-linuxkit/