DockerCon 2015 – La grande messe de Docker
DockerCon Hackathon
Comme le veut la tradition, le week-end qui précède la DockerCon se déroule un Hackathon : une compétition ouverte à tout développeur qui aurait envie de se lancer, en à peine 24h, dans le développement d’un nouveau projet autour de Docker.
250 développeurs étaient au rendez-vous et une quarantaine de projets ont été soumis. En voici quelques-uns que nous avons particulièrement apprécié :
- Docker for iOS app dev par Jeff Kingyens: une application node.js qui implémente l’API Docker pour le build et run d’applications iOS
- libsecurity par Ad Van Der Veer, Amir Jerbi, Peter Rossbach, Meir Wahnon, Daniel Sachse et Greg Deed : Un système de distribution massive de patch de sécurité pour des conteneurs distribués
- Lightning Kite par Fabrizio, Toni, Tim, Iqbal, Jochen, and Terry : une extension de Kitematic pour le support de plusieurs provider via docker-machine (e.g. Kitematic on steroids)
- Distributed Computing Platform based on Rancher par l’équipe de CommitStrip (@ipernet et @ThomasGX) : calcul distribué avec Docker et Rancher
Le projet qui a remporté le premier prix est un client Docker vocal pour Cortana, le “Siri” de Microsoft, développé par @HaishiBai2010 et @danielfe.
Quand à nous, hé bien nous avons participé encore une fois avec le projet the Phedds: the Phenomenal Docker Demos. Une console web pour réaliser des démos Docker grandioses. Un shell contourné par 3 quadrants qui représentent graphiquement les conteneurs, leurs relations et le resources consommées en temps réel. L’idée de ce projet est de Mike et les autres membres de l’équipe sont Ryan, Kalyan, Zorigt et Murali.
En participant à un Hackathon, on peut être sûr d’une chose : un t-shirt nous sera offert. Et celui-ci était exceptionnel :
Il a été réalisé par les français de CommitStrip qui ont aussi participé au Hackathon : la classe ! Chez Zenika nous sommes des grands fans de leur strip et chez Docker ce doit être la même chose.
Les nouveautés de la keynote : jour 1
C’est Ben Golub, le CEO de Docker, qui est le premier à monter sur scène. Après quelques remerciements il passe la parole au CTO Solomon Hykes qui commence par rappeler la mission de Docker :
Our mission is to build tools for mass innovation
Le discours de Solomon est clair et convaincant. Le logiciel est le moyen le plus puissant aujourd’hui pour innover. Et Docker veut simplifier au maximum le développement et la publication de logiciels. Les quatre objectifs que Docker se donne pour les prochaines années en découlent :
1. Reinvent the developer toolbox 2. Build better plumbings 3. Open Standards 4. Help Organisations solve real world problems
Les annonces qui suivent au cours de cette keynote adressent les trois premiers objectifs. Le quatrième sera le sujet de la deuxième journée.
Docker network et les nouvelles versions de Machine, Compose et Swarm
Le premier jour de la DockerCon coincide avec la release de la version 1.7 de Docker. La nouveauté la plus importante de cette version est l’integration dans le engine du nouveau module réseau libnetwork. Cela rend plus flexible la configuration réseau (grâce à un système de plugin que nous verrons plus tard) mais surtout le support de configurations multi-host. C’est a dire qu’il sera possible d’établir des liens, (les links), entre conteneurs sur des hosts distants. Cette dernière fonctionnalité n’est pas livrée avec la version 1.7 mais est disponible uniquement sur le channel experimental .
Machine, Compose et Swarm, les outils d’orchestration de Docker, ont aussi été mis à jour pour la DockerCon. Considérés jusqu’à aujourd’hui trop pour êtres utilisés en production, pour cette release il y a eu une stabilisation du code et pas de nouvelle features.
Les seules nouveautés majeures concernent Swarm : l’integration avec Mesos (i.e. la possibilité de déployer les conteneurs dans un cluster Mesos en passant par Swarm) et l’exploitation du nouveau module de networking du Docker Engine (i.e. la possibilité de faire communiquer des conteneurs qui se trouvent sur des noeuds différents).
Docker plugins
Et on arrive à une des annonces les plus attendues : les plugins pour Docker. Annoncés à la fin de 2014, ces points d’extension pour le engine Docker voient le jour aujourd’hui mais uniquement dans le channel experimental.
Pour l’instant deux types de plugins ont été présentés :
- Network plugins: extensions pour connecter des conteneurs qui peuvent être sur des machines ou des réseaux distants
- Volume plugins: extensions pour la persistance des volumes des conteneurs
Les autres typologies de plugins disponibles sont scheduler et service discovery. D’autres seront bientôt livrées.
Il existe déjà des premiers exemples de plugins. Flocker pour les volumes et Weave, Project Calico, Nuage Networks, Cisco, VMware, Microsoft et Midokura pour le networking.
Docker plumbing project et notary
Une grande partie du code de Docker (50%) sert à la gestion de l’infrastructure, ce que l’on appelle infrastructure plumbing. Il s’agit de tout ce qui n’est pas fonctionnel à la gestion des conteneurs.
Plus le projet grandit plus on sent le besoin de séparer la partie infrastructure de la partie conteneurs. Et Solomon a annoncé que Docker s’engage à effectuer cette séparation. Cela commence avec deux projets : runC, auquel est dédié le prochain paragraphe, et notary, un outil pour sécuriser les mises à jour.
Notary se base sur The Update Framework pour vérifier l’intégrité et la source des artefacts téléchargés sur Internet. Dans l’esprit du plumbing project, cet outil est séparé de Docker et du Hub et pourrait être réutilisé par d’autres projets. Son utilité ? La vérification des images téléchargées avec un docker pull
ou du package d’installation de Docker. Notary a été développé par Diogo Monica et Nathan McCulney, les deux experts sécurité récemment recrutés par Docker et le code est disponible sur github.
runC
Mais la première étape du Docker plumbing project consiste à isoler le code pour la gestion des conteneurs : le “container runtime”. Et c’est ce que l’équipe a fait avec runC, peut-être la nouveauté la plus importante de cette conférence : le code qui constitue le noyau de Docker, libcontainer, est déplacé dans ce nouveau projet qui ne fait pas partie de l’organisation Docker mais du Open Container Project (OCP). Docker a fait donation de son “container runtime” à la OCP, organisation vendor-neutral, que nous présentons quelques lignes plus bas.
Runc est actuellement en phase de développement mais un support multiplateforme (Linux et Windows 10) et multi architecture (x86, Arm, Power, Sparc) est annoncé. Pour plus d’informations une page y est dédiée et le code est disponible sur github.
Open Container Format et Open Container Project
L’année dernière, quelques jours avant la DockerCon Européenne, CoreOS avait présenté un standard ouvert pour la définition du format des images de conteneurs : appc. Et avait livré en même temps, rkt, un runtime qui implémente ce standard. Plutôt qu’une attaque il s’agissait d’une incitation : Docker était devenu le standard de facto avec un écosystème important qui attendait impatiemment la définition d’un standard pour les conteneurs.
La réponse de Docker arrive aujourd’hui avec l’annonce du Open Container Project, une coalition de sociétés (entre autres Amazon, CoreOS, Docker, Google, IBM, Mesosphere, Microsoft, Rancher Labs, Red Hat, VMware) unies pour définir un standard pour le format des containers. Ce projet sera maintenu par la Linux Foundation. La rédaction de la spécification Open Container Format est encore en cours. Le premier draft sera publié à la fin du mois de juillet.
Au moment où Solomon a fait l’annonce, Alex Polvi, le CEO de CoreOS qui se trouvait au premier rang, s’est levé pour serrer la main à Solomon : la guerre du standard des conteneurs est terminée !
Les nouveautés de la keynote : jour 2
C’est encore Ben Golub qui prend la parole au début de la matinée. Il rappelle les thèmes du premier jour (Open Standards, Plumbing, Developer Platform) et introduit le thème de cette deuxième journée : Business Solutions. Si la première journée était plus orientée développeurs, la deuxième est pour les clients et les partners. Est-ce que Docker est prêt pour la prod ? La réponse est oui et toutes les annonces de cette matinée visent à convaincre tous les clients qui auraient encore des doutes.
Une nouvelle version du Docker Hub
Le Docker Hub a été lancé il y a à peine un an et compte déjà 240K utilisateurs. Il a servi plus de 500M pull d’images Docker. Il est devenu un repository pour images privées mais surtout d’images officielles.
Mais le Docker Hub est aussi utilisé comme outil pour l’intégration continue : on peut builder une application (en utilisant les automated builds qui créer une image à partir d’un Dockerfile
) ou la déployer (avec le système de hook du Hub).
Bref l’architecture et la capacité prévue pour le Hub il y a un an ne sont plus suffisantes et un refactoring de la stack technique a été obligatoire.
D’où le lancement de cette nouvelle version, encore en beta, les jours de la conférence. A noter que la vieille version est toujours opérationelle : on peut tester la beta si on veut ou bien continuer à utiliser l’ancienne version.
Docker Trusted Registry et les solutions commerciales
Beaucoup de clients ne peuvent pas utiliser le Docker Hub pour des contraintes de sécurité. Pour eux et pour tout ceux qui préfèrent avoir un Hub dédié uniquement à leurs images, Docker a présenté aujourd’hui un nouveau produit : le Docker Trusted Registry.
Il s’agit d’un registry Docker qui peut être déployé sur un serveur dans notre réseau, derrière un firewall, en s’intègrant avec LDAP et Active Directory.
Project Orca
Le projet Orca développé par Evan Hazlett naît des cendres de Shipyard. C’est un outil dédié aux ops pour le monitoring et la gestion des conteneurs déployés en production. Parmi les différentes caractéristiques nous avons noté :
- L’intégration avec des services pour l’authentication des users
- Les détails des layers qui constituent une image
- L’intégration avec Swarm pour gérer tous les noeuds d’un même cluster
Mais la fonctionnalité la plus intéressante est la notion de stack de conteneurs. Orca permet de définir des groupes de conteneurs interconnectés comme on le fait pour docker-compose : à l’aide d’un fichier yml au même format.
Le repository github du projet Orca n’est pas public (pour l’instant). Pour avoir plus d’informations on peut remplir ce formulaire.
Docker commercial solutions
Un service de TMA est une des demandes récurrentes des clients qui souhaitent déployer Docker en production. Pour y répondre, Docker proposera à partir d’aujourd’hui un service d’experts disponibles pour répondre aux questions des utilisateurs ainsi que la maintenance du Docker Engine pendant un an à partir de la date de release et l’accès à des Docker registry privés.
Plus d’informations sont disponibles à la page : https://docker.com/solutions
Les talks
À la fois le premier et le deuxième jours, après la keynote, ont eu lieu une série de talks qui traitaient de manière plus détaillée les sujets abordés à la keynote. C’était l’occasion de découvrir des REX et d’assister à des démos parfois spectaculaires.
Nous avons séléctionnés les 4 talks qui nous ont le plus impressionné :
Arnaud Porterie et Mike Cosby – Docker Engine
Sans aucun doute la démo la plus cool de toute la conférence ! Le tour du monde d’un serveur Quake (dans un conteneur) à coups de checkpoint/restore avec runC sans jamais arrêter de jouer.
Pour plus d’informations sur les détails techniques de cette démo Saied Kazemi, un ingénieur de Google, a écrit un article très intéressant.
En plus de la démo, Mike et Arnaud ont parlé du futur du Docker Engine et de runC, sujets déjà introduits par Solomon lors de la keynote, un peu plus détaillés dans ce talk.
En tout cas check out the video, ça vaut le coup !
Luke Marsden (ClusterHQ), Alexis Richardson (Weaveworks), Jeff Lindsay (Glitter Labs) – Docker plugins
Les extensions viennent d’être annoncées à la keynote et ce talk en montre deux implémentations : le volume plugin développé par ClusterHQ (Flocker) et le networking plugin développé par Weaveworks. Le tout expliqué à l’aide d’une démo vraiment bien faite.
Le mécanisme d’extension peut-être simplifié ainsi : les plugins s’enregistrent auprès du Docker Engine pour être notifiés a l’occasion de certains événements. À chaque notification est associé un hook bloquant. La communication entre les plugins et le engine se fait avec une API REST.
Ci dessous un exemple d’utilisation des plugins weave (networking) et flocker (volumes)
docker run --publish-service=service.network.weave --volume-driver=flocker
Tous ce qui a été présenté est déjà disponible pour être testé (sur le experimental channel de Docker). Il existe une page github qui explique dans les détails les instructions d’utilisation.
Jessie Frazelle – Contain yourself
Jessie est une développeuse brillante qui travaille pour la Core Team Docker. Elle est aussi très active sur twitter et à travers son blog. Ce talk est d’ailleurs inspiré d’un des ses blog posts : Docker Containers on the Desktop ou comment utiliser Docker de façon non conventionnelle. Jessica nous a montré comment elle a réussi a faire tourner tous les outils de son laptop dans des images Docker : client mail (mutt), IRC (Irssi), client twitter (Rainbowstream), browser (chrome), skype (avec appel en direct à Arnaud Porterie ;-)), Spotify etc. Elle a énuméré toutes les astuces pour accéder au serveur X11, à la carte son et au micro à partir d’un conteneur. Parmi toutes ces applications, la plus difficile à exécuter dans un conteneur a été Virtual Box : il a fallu récompiler le driver vboxdrv
.
Pour terminer Jessie nous a parlé du projet Tor, un ensemble d’outils pour l’anonymisation sur Internet, et de comment utiliser Docker pour rendre anonyme tout le flux TCP sortant de notre interface réseau. Les détails de cette démo sont également décrits dans un blog post : How to Route Traffic through a Tor Docker container.
Bref ce talk était encore une fois très intéressant et la video est déjà disponible online.
Mark Russinovich – Docker on Windows
La collaboration entre Microsoft et Docker est de plus en plus étroite et Mark Russinovich, le CTO de Microsoft Azure, était là pour en témoigner.
Il met tout de suite au clair que Microsoft est la société qui a le plus contribué au code de Docker entre mars et juin 2015. Cela s’explique par les pull request importantes qui ont été faites par des développeurs du groupe de Redmond : le client natif pour Windows et le support de Windows 10 pour le Docker Engine.
Mais Mark a surtout fait un certain nombre de démos qui montrent comment les produits Microsoft sont désormais intégrés avec Docker :
- Le déploiement d’une application .NET dans un conteneur Docker distant (dans un host Ubuntu) en utilisant Visual Studio sur Windows.
- L’intégration de Compose et Swarm avec Visual Studio Online
- Le provisioning d’une instance Azure du nouveau Docker Trusted Registry
- La coloration syntaxique et l’autocomplétion des fichiers yml de docker-compose avec Visual Studio Code sur MacOS et le build, run d’un conteneur distant, cette fois-ci sur un serveur Windows 10.
Beaucoup de nouveautés donc, certaines déjà disponibles et d’autres qui le seront bientôt avec la GA de Windows 10 le 29 juillet prochain. On peut en tout cas affirmer que le message transmis par le CEO Nadella lors de la dernière conférence Build est toujours d’actualité : Microsoft ❤️ Linux !
Rendez-vous à Barcelone
Et nous voici arrivés à la fin de ce compte rendu. La conférence s’est terminée avec Ben Golub qui a révélé le lieu et la date de la prochaine DockerCon : ça se fera au CCIB de Barcelone le 16 et 17 Novembre prochains. Et nous ne pourrons pas la manquer 😉