Il ne se passe pas un jour sans qu’émergent des développements intéressants autour de Docker. Certes, Kubernetes est peut-être de plus en plus abreuvé de nouveaux outils, mais Docker continue d'offrir une orchestration de conteneurs « suffisante » pour la plupart des projets de développement et de déploiement. De plus, la plateforme dispose d’un écosystème bien fourni d'outils tiers qui permettent d'étendre son usage, de l'améliorer ou de le rendre moins exigeant. Voici 12 projets open-source qui, soit tirent parti de Docker, soit renforcent son usage, utilisant Docker pour des applications spécifiques ou rendant Docker plus facile à utiliser.

Dive

Les images Docker sont comme des sandwiches, avec plusieurs couches. Mais pour être plus exact, il faut ajouter que ces sandwiches sont dans des emballages opaques : on ne sait pas toujours combien il y a de couches ni ce qu'elles contiennent. Dive permet d'explorer visuellement les couches d'une image Docker via une interface utilisateur interactive. Celle-ci permet de voir ce qu’il y a dans chaque couche, et de savoir dans quelle mesure une couche a modifié la couche inférieure (ce qui a été ajouté ou enlevé). Dive permet aussi d’analyser une image et d’identifier un espace perdu ou dupliqué, et même de transmettre les résultats à un pipeline d'intégration continue, au point d’empêcher la compilation d’une image ayant trop d'espace perdu.

Docker Compose UI

Docker Compose UI est un projet sous licence MIT qui dote Docker Compose d’une interface utilisateur basée sur le Web, développée avec le framework Flask de Python. Les conteneurs peuvent être exécutés localement ou sur un hôte distant, et l'interface utilisateur de Docker Compose elle-même est disponible dans un conteneur Docker pour plus de commodité. A noter que certains des projets de démonstration fournis avec l'interface utilisateur de Docker Compose ne peuvent pas évoluer « en raison de conflits entre ports publiés ».

Dockly

L’essentiel du travail de Docker s'effectue via une interface CLI ou un terminal, et le Docker CLI par défaut ressemble beaucoup à n'importe quel autre programme CLI. Dockly ajoute à Docker une interface de terminal en plein écran - un tableau de bord en mode texte de tous les conteneurs en cours d'exécution, une vue en direct des logs de conteneurs et des statistiques d'utilisation, plus un onglet shell intégré.

Dusty

Dusty est un environnement de développement sous licence du MIT. L’outil permet d’améliorer l’usage de Docker Compose ou de Vagrant pour gérer les conteneurs. Les auteurs de Dusty affirment par exemple que le modèle de spécifications de l’outil est plus simple que celui de Docker Compose, et qu'il gère mieux que Vagrant l'isolation des dépendances des applications basée sur la version et les mises à jour des services. Dusty permet également de créer des tests en rapport avec une spécification pour un environnement donné, et de transformer des procédures multi-étapes communes en un script facile à appeler.

Elsy

Elsy se présente comme « un outil de construction multilangage sensible aux opinions » qui utilise Docker et Docker Compose. Elsy permet de construire un référentiel logiciel de manière cohérente à travers tous les environnements et de réduire au minimum l'outillage nécessaire à sa réalisation, quel que soit le langage utilisé. Le Blackbox-test, l’une des spécificités mise en avant, permet de tester n'importe quel conteneur comme s’il était réellement en production. Par exemple, tout service nécessitant une base de données disposera d’un conteneur de base de données configuré dédié, et Elsy supprimera automatiquement l'environnement de test par la suite.

Gockerize

Gockerize devrait séduire les fans du langage Go. Cet outil sous licence BSD permet de construire des binaires Go statiques et de les packager dans des conteneurs Go minimalistes. Créé par les auteurs d’AeroFS, Gockerize permet par exemple « d'appliquer automatiquement un ensemble de correctifs à la bibliothèque Golang standard, ce qui, même si c’est rarement nécessaire, peut s’avérer d’un grand secours », selon l'article du blog présentant le projet. Gockerize n’a pas besoin de grand-chose pour fonctionner : Go, Docker 1.5 ou supérieur, et le shell Bash.

Habitus

Autre outil basé sur Docker, Habitus utilise un fichier Dockerfile et un fichier build.yml pour créer des compilations de conteneurs à plusieurs niveaux qui contiennent un nombre quelconque de commandes arbitraires. Chaque étape de la compilation peut s'appuyer sur une étape précédente, pour s'assurer que toutes les dépendances complexes en plusieurs étapes fonctionnent correctement. Habitus prend également en charge l'inclusion de secrets dans le processus de compilation, et ce, sans laisser de traces dans l'image.

Hyperd

Hyperd est un « outil de diagnostic d'hyperviseur qui permet d'exécuter des images Docker sur n'importe quel hyperviseur ». Il utilise Docker, QEMU, et Xen pour atteindre ses objectifs. Ses créateurs affirment que Hyper utilise un minimum de ressources (28 Mo), démarre à la vitesse d'un conteneur plutôt qu'à celle d'une machine virtuelle, offre des performances élevées et une isolation hardware renforcée pour les applications. Un cas d’usage pour Hyper concerne la création d'applications multi-tenant, basées sur Docker.

Kitematic

Parfois, on a juste besoin d’une interface graphique. Kitematic offre une interface graphique pour gérer les conteneurs Docker sous MacOS, Ubuntu Linux et Windows. Kitematic permet aussi une exposition automatique des données de volume de conteneur à travers le système de fichiers, un CLI intégré à Docker et la synchronisation automatique de son état pour correspondre aux modifications apportées à Docker (par exemple, quand on ajoute de nouvelles images de conteneur).

Logspout

Cela fait longtemps que le monde Unix associe de petits programmes pour résoudre de gros problèmes. Logspout applique la même philosophie à la gestion des logs à partir des conteneurs Docker. Logspout achemine tous les logs (stdout et stderr, principalement) de tous les conteneurs sur un hôte donné vers la meilleure cible possible identifiée par l’utilisateur. Les logs agrégés résultants peuvent être visualisés en temps réel par la simple lecture d’un flux HTTP.

Portainer

Une pile Docker, même relativement simple, peut comporter de nombreuses pièces mobiles : conteneurs, images, réseaux, volumes, secrets. Comment mémoriser tout cela ? Portainer fournit une interface utilisateur Web pour les environnements Docker, aussi bien des hôtes uniques que des clusters, et restitue une vue unique de tout ce que l’on utilise. Il met la gestion et la vue d'ensemble de tous les composants courants de Docker à quelques clics de souris. Mieux encore, l'ensemble est déployé dans l’infrastructure Docker existante sous la forme d’un conteneur unique.

Whalebrew

En général, les utilisateurs de MacOS sont familiers de Homebrew, le système de gestion de paquets ad hoc pour MacOS. Whalebrew permet d'installer des images Docker et de les exécuter directement depuis la ligne de commande via un alias, comme si c’était des exécutables installés localement. Pour installer des paquets, il suffit simplement de taper whalebrew install . Les paquets conservés dans le référentiel de Whalebrew fonctionnent mieux, mais théoriquement, toute image Docker qui accepte les commandes CLI devrait fonctionner.