Das Verständnis des Unterschieds von Kubernetes und Docker ist eines der wichtigsten Themen in Bezug auf native Clouds und DevOps. Auch wenn Kubernetes und Docker sehr oft zusammen erwähnt werden, sollten sie deshalb nicht immer auch miteinander verglichen werden. Tatsächlich stehen Kubernetes und Docker nicht in direkter Konkurrenz zueinander. Man sollte sie eher als zwei Technologien betrachten, die sich ergänzen und die zusammenarbeiten können.
Wie können Sie vorhersehen, mit welchen dieser Umstände Sie konfrontiert sein werden? Um dies zu erreichen, sollten Sie als erstes die spezifischen Bereiche kennen, bei denen sich Kubernetes und Docker überlappen und bei denen sie sich unterscheiden.
Docker ist eine Open Source-Plattform für Anwendungscontainer. Falls dieses Konzept neu für Sie sein sollte: Ein Container ist ein Standalone-Verpackungsformat, das allen notwendigen Code und alle erforderlichen Abhängigkeiten in einem ausführbaren Format bereitstellt. Um eine Analogie aus der Realwelt anzuführen:, Ein Container ist wie ein IKEA-Paket, mit all den Einzelteilen eines Schreibtischs sowie Klammern und Schrauben (und natürlich dem Sechskantschraubenschlüssel) – aber außer dass dieses Paket alle Einzelteile enthält, baut es auch noch den Schreibtisch für Sie zusammen, wenn Sie es „ausführen“.
Docker wird oft von Anwendungsentwicklern verwendet, da es leicht ist und ein standardisiertes Format aufweist. Diese Merkmale ermöglichen Entwicklern das Erstellen, Testen und Bereitstellen mit Flexibilität und Skalierbarkeit.
In der IT-Branche hat Docker auch noch eine weitere Bedeutung: Es gibt ein tatsächliches Unternehmen namens Docker, Inc. Diese Firma entwickelt die Tools für die Arbeit in der Plattform. Es ist wichtig, dass man sich des Bedeutungsunterschieds trotz des gleichlautenden Namens bewusst ist.
Wenn es sich bei Docker um einen einzelnen Container handelt, dann ist Kubernetes ein Tool, um viele Container auf einmal zu verwalten. Genau wie Docker (die Plattform, nicht das Unternehmen) ist Kubernetes eine Open Source-Plattform. Allerdings wird sie von der Cloud Native Computing Foundation als Projekt mit über 2.300 Teilnehmern verwaltet. Kubernetes funktioniert wie ein Betriebssystem für die Cloud, es optimiert und vereinfacht die Verwaltung über virtuelle Maschinen und Clouds hinweg, sodass IT-Abteilungen zu skalierende Aufgaben bewältigen können.
Was kann Kubernetes leisten? Kubernetes funktioniert ähnlich wie jede Art von Systemmanagement auf einem lokalen System, nur auf den Umfang eines Containers bezogen. Bereitstellungen, Updates, Zeitpläne, Löschungen und allgemeine Integritätsüberwachungen gehören alle zu den Funktionalitäten von Kubernetes. Um noch einmal zur IKEA-Analogie zurückzukehren: Wenn ein Container einem einzelnen Schreibtisch entspricht, dann ist Kubernetes so etwas wie der Facility Manager, der Bestellungen für Schreibtische aufgibt, diese verteilt und den Status von Schreibtischen, Stühlen und anderen verpackten Möbeln im IKEA-Lager überprüft.
Ein Aspekt, der bei einer Diskussion von Docker und Kubernetes meist unerwähnt bleibt, ist die Definition von Container-Laufzeiten. Was ist eine Container-Laufzeit? Kurz gesagt, handelt es sich dabei um eine Engine, die den Container ausführt – um zur IKEA-Analogie zurückzukehren, Container-Laufzeiten entsprechen der Montageanleitung in der Packung. In einigen Fällen ist diese sehr einfach und die Ausführung und Verwaltung wird über eine sogenannte Low-Level-Container-Laufzeit abgewickelt. Bei komplexeren Szenarien stellen High-Level-Container-Laufzeiten Anweisungen für die API-Integration, für Image-Formate und für die Image-Verwaltung bereit. In manchen Fällen kann der Begriff synonym mit Docker verwendet werden, auch wenn dies im Detail nicht hundertprozentig stimmt.
Kubernetes führt eine API namens Container Runtime Interface (CRI) aus. Diese verbindet sich mit den jeweiligen Container-Laufzeiten, um das Package auszuführen. Um wieder einmal die IKEA-Analogie zu verwenden: Die CRI von Kubernetes ist die Person, welche die Montageanleitung (Container-Laufzeit) im Paket (Container) liest.
Es gibt neben Docker noch andere Container-Laufzeiten. Zwei weitere, die beliebt sind, sind:
Containerd: Containerd wurde im Rahmen des Docker-Projekts gestartet. Ziel war es jedoch, Docker flexibler und modularer zu gestalten, sodass die Entwickler sich entschieden haben, Containerd als eigenes Projekt abzutrennen. Containerd verarbeitet Anforderungen an High-Level-Container-Laufzeiten, wie das Abrufen von Images aus Registrys, die Image-Verwaltung und die Integration mit Low-Level-Laufzeiten, um Container-Abläufe auszuführen.
CRI-O: CRI-O ist eine weitere Open Source-Container-Laufzeitalternative zu Docker. Es implementiert das Kubernetes Container Runtime Interface (CRI), um Laufzeiten zu ermöglichen, die dem Open Container Initiative-Standard entsprechen.
Sowohl CRI-O als auch Containerd verwenden die von CRI bereitgestellten Spezifikationen und sind damit vollständig mit Kubernetes kompatibel.
Der Unterschied zwischen Docker und Kubernetes wird oft diskutiert, aber die Wahrheit ist, dass beide nicht wirklich in direkter Konkurrenz zueinander stehen. An der IKEA-Analogie, die wir in diesem Artikel verwendet haben, wird deutlich, wie beide miteinander in Beziehung stehen und warum sie den Schlüssel zur Ausführung eines modernen IT-Managements darstellen – dabei aber in keiner Weise in Konkurrenz zueinander stehen. Stattdessen sind sie beide Teil des Cloud-nativen Ökosystems. Docker-Container sind Teil von dem, was Kubernetes verwaltet, und der Vorteil von Kubernetes ist die Möglichkeit, das Volumen von Docker-Containern problemlos zu skalieren.
Die entscheidende Frage lautet also nicht: „Sollte ich Kubernetes oder Docker verwenden?“ Stattdessen sollten IT-Leiter in erster Linie darüber nachdenken, wie sie Kubernetes und Docker im Hinblick auf Management und Betrieb zusammen einsetzen wollen.
Kubernetes und Docker wurden dafür entwickelt, zusammenzuarbeiten. Zwar muss man Kubernetes nicht verwenden, um eine Docker-Bereitstellung zu verwalten, aber sie sind ein effektives Gespann bei Szenarien, in denen mehrere Instanzen von Bereitstellungen verwaltet werden müssen. Das gilt besonders für Situationen, bei denen mehrere Bereitstellungen der selben Anwendung verwendet werden, oder wenn eine Skalierung erforderlich ist. Der Open Source-Charakter des Kubernetes-Orchestrierungssystems stellt eine durchgehend unterstütze Plattform sicher, die Komplexitäten über mehrere Server hinweg verwaltet.
Von Kubernetes aus können zahlreiche Docker-Packages bereitgestellt und verwaltet werden. Das geschieht über Funktionen wie die Batch-Verarbeitung von Patches und Updates und eine skalierbare Überwachung von Problemen. Zur gleichen Zeit werden dabei auch nach Bedarf Anforderungen verarbeitet. Mithilfe von Kubernetes können IT-Abteilungen:
Oracle Cloud Infrastructure bietet eine Reihe von Services an, mit denen Sie moderne native Cloud-Anwendungen beschleunigen und erstellen können. Insbesondere Kubernetes Engine und Container Registry – die Docker-Images verwalten und analysieren – sind robuste und kostenlose (im Lieferumfang enthaltene) Tools, die das Management optimieren und die Leistung steigern. Überzeugen Sie sich selbst, indem Sie Oracle Cloud kostenlos testen, um auf Kubernetes zuzugreifen.
Nachdem der Archäologische Park von Pompeii in Italien im März 2020 geschlossen worden war, mussten alle Pläne für eine Wiedereröffnung Maßnahmen zur Umsetzung und Kontrolle der räumlichen Distanzierung beinhalten. Es wurden Pläne geschmiedet, Touristen den Zugriff auf eine neue MyPompeii-App zu ermöglichen, die auf einer Reihe von Oracle Produkten basiert, die zur Beschleunigung einer Cloud-nativen mobilen Lösung ausgewählt wurden, darunter OCI Kubernetes Engine und Oracle Container Registry.
Das Londoner Unternehmen Snap Vision bietet visuelle Suchtechnologie an, die sich auf künstliche Intelligenz stützt und Käufern hilft, Kleidung entsprechend ihrer Vorlieben zu finden. Als aufgrund der COVID-19-Pandemie der Verkauf in Ladengeschäften über längere Zeiträume praktisch zum Erliegen kam, hat Snap Vision seine Technologie Einzelhändlern in Großbritannien angeboten, um ein digitales Einkaufserlebnis zu generieren. Die Skalierung stellte sich dabei als große Herausforderung heraus, aber Snap Vision konnte dank Oracle Cloud Infrastructure mit Kubernetes kostengünstig neue Einzelhandelsumgebungen hosten.