Was ist Dockers Moby-Projekt?

Als Austin ite genoss ich es, DockerCon lokal zu haben, und ich war Mitautor eines Leitfadens für einen Besuch in Austin in der Hoffnung, dass die Teilnehmer DockerCon auch in Austin genießen würden.

Während der DockerCon 2017 wurden einige wichtige Ankündigungen gemacht, darunter das Moby-Projekt. 

Was ist das Moby-Projekt? Es ist ein Rahmen, um spezialisierte Containersysteme zusammenzubauen, ohne das Rad neu zu erfinden.

Das Moby-Projekt ist für Docker das, was Fedora für Red Hat Enterprise Linux ist. - Solomon Hykes, Docker CTO / Gründer

Mit dem Aufbau des Containerprojekts, das dem Fedora-Projekt entspricht, ändert sich die Art und Weise, wie Docker erstellt wird.

Red Hat hat in den frühen Tagen der RHEL-Verwirrung gute Arbeit geleistet, indem sie das Projekt vom Produkt abgegrenzt haben. Sie haben Fedora von RHEL getrennt. Docker sieht diesen Ansatz als einen Weg, um die Community besser einzubinden. Die Grenzen zwischen Community und Produkten waren zuvor verschwommen. Die Leute konnten nicht unbedingt sagen, wann sie zum Projekt im Vergleich zum Produkt beitragen. Diese Trennung des Codes zwischen dem Moby / Moby-Repository und dem Docker / Docker-Repository verdeutlicht diese Unterscheidung.

Moby wird Docker von einer monolithischen Engine in ein Toolkit umwandeln, um seine Komponenten in verschiedenen Konfigurationen zusammenzusetzen. Das Moby-Projekt sollte die Wiederverwendung jeder der Komponenten fördern. Docker hat in dieser Hinsicht eine Erfolgsgeschichte und kann an ihrer Wiederverwendung gemessen werden, die über ihren Schöpfer hinausgeht:

  • Sie haben OCI / runc herausgeschleudert und es ist jetzt der etablierte Standard für Container-Laufzeit- und Image-Formate.
  • Sie haben Containerd ausgegliedert und es ist jetzt der De-facto-Industriestandard für Containerlaufzeiten mit Beiträgen aller großen Cloud-Anbieter und 99 Prozent der Installationsbasis (Millionen von Knoten weltweit).
  • Notar ist die ausgereifteste Implementierung von TUF in der Branche und ein Zentrum der Zusammenarbeit für die Sicherheitsgemeinschaft.
  • Die Docker-Distribution ist die Open-Source-Grundlage für ein Dutzend kommerzieller Produkte.

Das Docker-Team hofft, dass diese einzelnen Komponenten, wenn der Docker-Monolith in kleinere Teile zerlegt wird, zu Bausteinen für kundenspezifische Lösungen werden können. Das monolithische Projekt, das zuvor in Docker / Docker ansässig war, wurde nach Moby / Moby verlegt.

Es gab einige Verwirrung über das Projekt. Das Docker-Team hat das Projekt den Konferenzteilnehmern und den meisten Betreuern gut mitgeteilt. Die Leute, die sich eher beiläufig mit der Community befassten, waren überrascht und unklar über ihren Zweck und ihre Auswirkungen. Sie äußerten sich frustriert darüber, nicht zu verstehen, wie die verschiedenen Teile zusammenpassen oder was die neuen Funktionen (z. B. LinuxKit) bewirken.

Das @moby-Projekt auf den Punkt gebracht: innen und außen. pic.twitter.com/K8Rn9YYtVs

- Solomon Hykes (@solomonstre), 22. April 2017

Mit dem Moby-Projekt können Systembauer andere Projekte auf demselben Tool erstellen. Ein System-Builder möchte diese Assemblys möglicherweise unterschiedlich ausführen, je nachdem, ob sie auf einem kleinen IoT-Gerät oder auf einem großen System mit GPUs ausgeführt werden.

Es gibt noch viel Arbeit, um Komponenten auszubrechen. Ziel ist es jedoch, einen großen Upstream für Docker zu erstellen - Moby. Docker Inc. möchte, dass das Tool offener ist als Docker. Produktdesignentscheidungen stehen manchmal im Widerspruch zu einem konsensgesteuerten Open-Source-Projekt. Durch die Trennung von Bedenken kann Docker Inc. Meinungen zur Benutzererfahrung in seinen Community- und Enterprise-Docker-Angeboten zusammenstellen. Moby ist das Projekt. Docker ist das Produkt.

Das Moby-Projekt kann in vier Ebenen beschrieben werden:

  1. Den ganzen Weg vorgeschaltete Komponenten
  2. Moby
  3. Docker CE
  4. Docker EE
David Chung / Docker Inc.

Die Organisation des Projekts in Ebenen sollte den natürlichen Inhalt fördern, der entsteht, wenn Entscheidungen zwischen dem, was für das Projekt funktioniert, und dem Produkt getroffen werden müssen. Docker als Produkt fügt Meinungen hinzu, die von den Benutzern mitgeteilt wurden (um es den Benutzern zu erleichtern). Zum Beispiel hat Containerd keine Standardregistrierung, während Docker Docker-Hub als Standard oder Docker-CLI hat, was eine einfache Suche nach offenen Problemen für Ihr Projekt im Docker-Supportforum / -system ermöglicht. Benutzer nicht betroffen. Benutzer interagieren weiterhin auf die gleiche Weise mit Docker.

  • Anwendungsentwickler, die nach einer einfachen Möglichkeit suchen, ihre Anwendungen in Containern auszuführen, wenden sich möglicherweise an Docker CE.
  • Unternehmens-IT, die  nach einer gebrauchsfertigen, kommerziell unterstützten Containerplattform sucht, kann sich an Docker EE wenden.

Für diese Benutzer ändert sich nichts. Die Befehlszeile bleibt gleich. Docker kann jetzt das Ökosystem nutzen, um schneller Innovationen für sie zu entwickeln.

  • Systemhersteller  , die Komponenten des Moby-Projekts nutzen möchten, können Innovationen entwickeln, ohne an Docker gebunden zu sein.

Projektsteuerung

Das Moby-Projekt ist offen und wird ein von der Community geführtes Projekt sein. Docker Inc. ist generell geneigt, einzelne Komponenten dieses Projekts gegebenenfalls an andere Leitungsgremien zu spenden. Containerd muss alleine von der Moby-Organisation stehen, weil es an CNCF gespendet wurde. Langfristige Einzelprojekte sollten irgendwann ausziehen und in andere Repositories verschoben werden.

FAQ zu Moby-Projekten

  • Werden andere Sprachen als Go aufgenommen, nachdem Moby den Monotlith aufgelöst hat?
    • Für LinuxKit - Ocaml und Rust sind verpflichtet. Es gibt keinen Masterplan zum Sprachenwechsel.
  • Wird REST durch gRPC ersetzt?
    • Docker Inc möchte im Allgemeinen die REST-API als konstante Fassade belassen und gleichzeitig die interne Kommunikation zwischen Moby-Projekten auf gRPC verlagern. Eine Komponente kann die Sprache ändern und hat keine Auswirkungen auf andere Komponenten (genau wie Microservices die Auswahl ermöglichen). Die Engine verfügt über eine HTTP-REST-API, und alle untergeordneten Komponenten haben gRPC übernommen. Solomon schlägt vor, gRPC als Standardschnittstelle zu verwenden. Zu den Vorteilen gehört ein stärker automatisiertes Werkzeug.
  • Wo finden Sie Docker CE (das Open Source-Projekt)?
    • TBD - Docker / CLI verfügt vorerst über die Client-Bibliotheken und SDKs. Verpackung und Aufbau sind editionsspezifisch, da es viele Docker für XXX gibt.