Der lise Blog:
Einsichten, Ansichten, Aussichten

Kubernetes vs. Docker: Was ist der Unterschied?

Eins vorweg: Kubernetes und Docker sind keine Konkurrenten. Es sind zwei sich ergänzende Tools, die zwei verschiedene Funktionen erfüllen. Dennoch haben die beiden Anwendungen einige Überschneidungen. Was Kubernetes und Docker unterscheidet, was deren Vorteile sind und wann du welches Tool einsetzen solltest. All das erfährst du hier.

 

  1. Was ist Docker?
     
  2. Was ist Kubernetes?
     
  3. Kubernetes vs. Docker: Freund oder Feind?
     
  4. Vergleichstabelle: Kubernetes vs. Docker
     
  5. Kubernetes: Vor- und Nachteile
     
  6. Was ist das richtige Tool für dich?
     
  7. Fazit: Kubernetes mit Docker für komplexe Infrastrukturen

 

    1. Was ist Docker?

    Der Begriff Docker stammt vom gleichnamigen Unternehmen Docker Inc. Es umfasst eine ganze Suite an unterschiedlichen Tools für Entwickler:innen. Spricht man von dem Tool “Docker” ist meist Docker Desktop gemeint. Daher verwenden wir in diesem Beitrag den Begriff „Docker“ für diese Anwendung.

    Du kannst Docker einsetzen, um Anwendungen in einer virtuellen, vom lokalen System isolierten Umgebung abzukapseln. Dazu wird die Anwendung zusammen mit ihren Abhängigkeiten in ein sogenanntes Image gebündelt. Anschließend kannst du mithilfe von Docker auch einen Container aus deinem Image erzeugen und deine Anwendung so betreiben.

    Da sich Container grundsätzlich auf jedem System ausführen lassen, das Docker unterstützt, kann deine Anwendung auf unterschiedlichen Betriebssystemen genutzt werden. Diese kannst du daher immer mit dem gleichen Betriebssystem entwickeln und betreiben, was dir eine Menge Zeit sowie Nerven erspart und die Bereitstellung auf unterschiedlichen Systemen vereinfacht.

    Docker, Inc. war einer der ersten Anbieter von Containerisierungs-Software auf dem Markt. Mittlerweile ist es ein Synonym geworden wie Tempo, Tesa oder googlen und wird häufig für Containerisierung im Allgemeinen verwendet. So gibt es auch andere Tools, mit denen sich Images erzeugen (z.B. Buildah, Kaniko) oder betreiben (z.B. Podman) lassen. Trotzdem spricht man oft von “Docker Images”.

    Achtung: Das Wort „Docker“ kann schnell für Verwirrung sorgen. Hier ist eine Übersicht von unterschiedlichen Begriffe und deren Bedeutung:  

    • Docker Inc.: Unternehmen
       
    • Docker Suite:  Oberbegriff für alle Anwendungen, die in der Suite gebündelt sind
       
    • Docker Desktop: Programm mit einer Benutzeroberfläche und für die Installation der anderen Anwendungen
       
    • Docker Swarm: Tool für die Orchestrierung auf mehreren Maschinen
       
    • Docker Compose: Tool für die Orchestrierung auf einer Maschine
       
    • Docker CLI: Kommandozeilen-Tool
       
    • Docker Build: Tool zum Bauen von Images

     

    2. Was ist Kubernetes?

    Kubernetes ist ein System, mit dem du Container automatisiert bereitstellen, skalieren und verwalten kannst. Dabei werden mehrere virtuelle oder physische Maschinen zu Clustern zusammengefasst, auf denen dann eine Vielzahl an Containern ausgeführt wird (=Container-Orchestrierung).

    Bei einer größeren und komplexeren Infrastruktur, die auf mehreren Containern basiert, ist das Tool besonders hilfreich. Beispielsweise kann Kubernetes beim Ausfall einer Maschine Container automatisch auf einer anderen starten oder deine Anwendung von vornherein auf mehreren Maschinen betreiben.

    Außerdem lassen sich Container mit Kubernetes kostensparend ausführen. Wenn eine Anwendung zeitweise weniger Ressourcen benötigt, etwa weil nachts weniger Nutzer in einem Onlineshop einkaufen, können andere Anwendungen die verfügbaren Ressourcen nutzen, ohne dass diese manuell freigegeben werden müssen.

    Ursprünglich entwickelte Google das Tool, um seine Milliarden von Containern pro Woche managen zu können. Mittlerweile ist Kubernetes zum Marktführer geworden und gehört der Cloud Native Computing Foundation.

    Good to know: Kubernetes ist an sich keine eigenständige Software, sondern besteht aus Bausteinen und Standards, auf Basis derer unterschiedliche Hersteller sogenannte Distributionen anbieten. Beispielsweise gibt es den “Azure Kubernetes Service” von Microsoft oder “OpenShift” von Redhat. Je nach Distributionen unterscheiden sich die Features und auch die Installation von Kubernetes.

     

    3. Kubernetes vs. Docker: Freund oder Feind?

    Während Docker für die Containerisierung einzelner Anwendungen eingesetzt wird, ist Kubernetes ein Orchestrierungstool für mehrere Anwendungen und Maschinen. Kurz gesagt: Mit Docker kannst du ein Image erzeugen, mit Kubernetes kannst du all deine Container ausführen und deren Zusammenspiel steuern.

    Beide Anwendungen ergänzen sich und können miteinander eingesetzt werden. Mit Docker kannst du Anwendungen in Containern isolieren. Mit Kubernetes kannst du die Docker-Container zu Clustern bündeln und sie zeit- sowie kostensparend verwalten. Somit müsste es eigentlich vielmehr Docker und Kubernetes statt Docker vs. Kubernetes heißen.

    Zur Docker Suite angehörig gibt es noch zwei Alternativen zu Kubernetes: Docker Swarm und Docker Compose. Beide Tools lassen sich wie Kubernetes zur Orchestrierung einsetzen. Allerdings hat sich Kubernetes als Marktführer durchgesetzt. Insbesondere Docker Swarm wird immer weniger genutzt.

    Docker Compose kommt bei einer kleinen Anzahl an Containern noch häufiger zum Einsatz. Denn es ist weniger komplex und wird mit der Docker Suite direkt mitinstalliert, sodass die Einrichtung einfacher ist als bei Kubernetes.

    Sobald die Anzahl an Containern steigt, braucht es aber ein umfangreicheres Tool, um die Container auf mehrere Maschinen verteilen zu können. Dafür empfehlen wir das DeFacto Standard-Kubernetes (warum erfährst du noch weiter unten). Zunächst soll gesagt sein, dass auch Docker Compose und Kubernetes sich nicht ausschließen. Beide können in Kombination miteinander genutzt werden. Auch wir verwenden beide Tools.

     

    4. Kubernetes vs. Docker Compose vs. Docker Desktop im direkten Vergleich

    Die Welt der Containerisierung ist sehr komplex. Daher gibt es zahlreiche Szenarien und Anwendungsfälle. Zur groben Orientierung möchten wir dir einen ersten Überblick geben:
     

    5. Kubernetes: Vorteile und Nachteile


    Vorteile Kubernetes:

    • Große Community: Kubernetes hat eine große Nutzerbasis, mit der du dich super austauschen kannst. Wenn Probleme aufkommen, kannst du dir einfach Hilfe holen.
       
    • Viele Tools und ergänzende Angebote: Da Kubernetes der De-Facto-Standard auf dem Markt ist, werden viele Tools und Dienstleistungen für das System angeboten, z.B. Tools zur Überwachung von Containern.
       
    • Größerer Funktionsumfang: Kubernetes ist zwar komplex, bietet dafür aber auch eine sehr große Bandbreite an Funktionen und Customizing-Optionen.
       
    • Automatische Skalierung: Die Skalierung kannst du automatisieren, was die Orchestrierung von sehr komplexen und großen Anwendungen oder sogar ganzen Anwendungslandschaften ermöglicht.

     

    Nachteile Kubernetes:

    • Erlernbarkeit: Da Kubernetes sehr umfangreich ist, braucht es in der Regel auch viel Zeit, das Tool zu erlernen. Du musst tief eintauchen und brauchst spezifisches Wissen.
       
    • Komplexität: Die Installation ist komplex, vor allem für Einsteiger:innen. Kubernetes muss umfangreich aufgesetzt und eingerichtet werden, was sich je nach Umgebung unterschiedlich gestaltet.
       
    • Häufige Updates: Kubernetes ist noch recht neu und es kommt häufig zu kleinen bis mittelgroßen Veränderungen. Du musst also am Ball bleiben und dich immer wieder mit den Neuerungen auseinandersetzen. Das kostet Zeit.

     

      6. Welches ist das richtige Tool für dich?

      Welche von den Tools du in deinem Unternehmen einsetzen solltest, ist vor allem von der Komplexität deiner Anwendung und dem Einsatzbereich abhängig.

      Wenn du gemeinsam mit anderen Entwickler:innen an einer Anwendung arbeiten möchtest, eignet sich Docker bestens für die Containerisierung.

      Möchtest du zudem deine Container orchestrieren, kann Docker Compose bei einfachen Anwendungen ausreichend sein. Das Tool ist einfach zu erlernen, kann schnell installiert und im Unternehmen eingesetzt werden. Vor allem, wenn ihr einen ersten Einstieg in die Orchestrierung wagen wollt, eignet sich Docker Compose, um die Technologien für euch auszutesten.

      Bei komplexen Anwendungen kommt Docker Compose allerdings schnell an seine Grenzen. Dann solltest du auf Kubernetes zurückgreifen. Bis du an diesem Punkt angelangt bist, hast du üblicherweise bereits diverse Containisierungs-Tools eingesetzt. Erst dann lohnt es sich, komplexe und sehr große Infrastrukturen mit Kubernetes aufzusetzen. Die umfangreichen Features sowie zahlreichen Tools bieten dir viele Vorteile und vereinfachen dir die Verwaltung von Anwendungslandschaften.

      Wir bei der lise nutzen sowohl Docker als auch Kubernetes: Docker verwenden wir in der Regel für die lokale Entwicklung, um eine einheitliche Umgebung für die gemeinsame Arbeit an unseren Anwendungen zu erzeugen. Für den Live-Betrieb nutzen wir meistens Kubernetes in der Azure Cloud, sodass wir eine sehr hohe Verfügbarkeit sicherstellen.

       

      7. Fazit: Kubernetes mit Docker für komplexe Infrastrukturen

      Der Begriff „Docker“ sorgt oft für Verwirrung. Denn damit kann sowohl das gleichnamige Unternehmen als auch die unterschiedlichen Tools der Docker Suite sowie ein beliebiges Containerisierungs-Tool gemeint sein.

      Docker (=Docker Desktop) ist ein Tool, mit dem Entwickler:innen auf ihren Rechnern Anwendungen containerisieren können. Docker Compose und Kubernetes werden eingesetzt, um den Betrieb mehrerer Container zu verwalten (= Orchestrierung).

      Kubernetes und Docker kannst du super kombinieren. Wir bei der lise nutzen sowohl mehrere Tools aus der Docker Suite, als auch Kubernetes. Für die lokale Entwicklung ist Docker Desktop hilfreich. Wenn du eine kleine Anzahl an Containern verwalten möchtest, ist Docker Compose eine gute Wahl. Für komplexere Anwendungen oder ganze Infrastruktur empfehlen wir Kubernetes.

       

      Kubernetes-Workshop für Anwendungsentwickler:innen

      Du möchtest mehr über Kubernetes lernen?  Unser zertifizierter Experte Marcel zeigt dir, wie du Kubernetes-Cluster optimal für dich nutzen und betreiben kannst. Ob Microsoft Azure, AWS oder Google Cloud, das erlernte Wissen kannst du auf alle Cloud-Anbieter anwenden.

      Wir freuen uns auf deine Anfragen und darauf, mit dir in die Welt der Orchestrierung einzutauchen!


      Zum Kubernetes-Workshop

       

       

      Diesen Artikel weiterempfehlen

       Teilen  Teilen  Teilen  Teilen