
kontaktiere uns


Docker und Kubernetes sind zwei der wichtigsten Technologien in der Welt der Containerisierung, aber konkurrieren sie um dasselbe Ziel? Nicht wirklich. Dieser Artikel erklärt was ist Containerisierung und wie Docker und Kubernetes können sich gegenseitig ergänzen. Darüber hinaus erläutern wir auch die Vorteile von Containerisierungs- und Orchestrierungstechnologien.
Die Containerisierung ermöglicht es Entwicklern, Softwarecode und die erforderlichen Komponenten für die Ausführung (z. B. Frameworks, Bibliotheken und andere Abhängigkeiten) zu paketieren ein einzelner isolierter Behälter. Daher kann jede Software oder Anwendung innerhalb eines Containers problemlos verschoben und in unterschiedlichen Infrastrukturen verwendet werden, unabhängig vom Betriebssystem oder der Umgebung der Infrastruktur.
Container ermöglichen es Softwarecode, mehr zu sein tragbar (kann leicht zwischen Plattformen und Infrastrukturen verschoben werden) und sichern, wenn man bedenkt, dass es erlaubt Entwickler um Anwendungen zu erstellen und bereitzustellen, die auf verschiedenen Betriebssystemen konsistent sind. Beachten Sie jedoch Folgendes nicht der gesamte Softwarecode kann in einer Microservices-Architektur entworfen werden. d. h. die Virtualisierung intensiver UI-Anwendungen erfolgt eher auf einer anderen Ebene des Hypervisors mit Vagrant und anderen.
Vor Containern Entwickler wird verwendet, um Code in einer bestimmten Computerumgebung zu erstellen. Wenn sie es an einen neuen Ort übertragen wollten (z. B. von Linux nach Windows), war der Code sehr schwierig anfällig für Bugs und andere Fehler. Dies war ein großes Problem, für das Container eine Lösung bieten, da sie abstrahieren Sie den Softwarecode vom Host-Betriebssystem weg, macht es unabhängig und in der Lage, schnell laufe überall ohne sich Gedanken über Bugs oder andere Probleme machen zu müssen.
Kurz gesagt, dank Containern können Anwendungen in unabhängigen Umgebungen gekapselt werden, und die primäre Vorteile sind: Skalierbarkeit, schnellere Bereitstellung und engere Übereinstimmung zwischen den Umgebungen. Nicht jeder nutzt Container, aber die Zahlen sind im Laufe der Jahre berüchtigt gewachsen.
„Der Bericht stellte fest, dass 60% der Backend-Entwickler auf der ganzen Welt jetzt Container verwenden. Im Vergleich zum zweiten Quartal 2019 ist der Einsatz von Containern im Durchschnitt um 10 Prozentpunkte (pp) gestiegen.“ (Stand der Cloud-Native-Entwicklung, 2020)
Das Konzept der Containerisierung selbst ist nicht neu. Dennoch entstand es mit der ersten Veröffentlichung von Docker im Jahr 2013 als Open-Source-Technologie, die auf dem Markt für Containerisierung immer noch einen klaren Vorteil bietet, nämlich 82,39% seines Anteils. Tatsächlich bot Linux bereits vor 2013 Container-Technologien (Linux Containers oder LXC) an. Dennoch eroberte Docker schnell den Thron als Nummer eins und wurde zum Standard-Containerformat.
Docker ist weithin bekannt Containerisierungsplattform gewohnt entwickeln, versenden und betreiben jede Anwendung als tragbarer und autarker Behälter. Es kann praktisch überall ausgeführt werden, von Desktops über Cloud-Umgebungen bis hin zu Rechenzentren.
Darüber hinaus hat Docker im Laufe der Jahre zahlreiche Tools entwickelt, um eine „voll ausgestattete“ Plattform für alles rund um die Containerisierung bereitzustellen. Dies bedeutet jedoch nicht, dass alle ihre Tools die wichtigste Lösung sind, wenn man den starken Wettbewerb und die in diesem Bereich entwickelten Qualitätstechnologien berücksichtigt.
Eines der wichtigsten Tools ist der Docker-Engine, eine Laufzeitumgebung, die es Entwicklern ermöglicht, Container auf jedem Entwicklungscomputer zu erstellen und auszuführen. Um einen Docker-Container auszuführen, kann man wählen, ob man mit dem beginnen möchte Docker-Datei, eine Datei, die explizit alles festlegt, was für die Ausführung des Docker-Images erforderlich ist (z. B. die Betriebssystemnetzwerkspezifikationen und Dateispeicherorte).
Im Gegenzug ist der Docker-Bild ist eine tragbare statische Komponente, die auf der Docker Engine ausgeführt werden kann. Sobald die Container erstellt sind und überall ausgeführt werden können, können Entwickler das Container-Image über Container-Registries speichern oder teilen.
Nur zur Verdeutlichung: Es ist nicht unbedingt erforderlich, das Dockerfile zu haben, um einen Container auszuführen. Stattdessen Entwickler können zuerst nach Container-Registern suchen (wie Docker Hub und Azure Container-Registrierung) und vorhandene Bilder abrufen aus Container-Registern, was viel Zeit und Arbeit spart. In der Regel enthalten diese Register eine große Anzahl von Bildern, die öffentlich erstellt wurden. Deshalb - und das ist der Wichtiger Imbiss - Um einen Docker-Container auszuführen, kann man einfach ein Image aus einer öffentlichen Container-Registry abrufen oder Images mithilfe einer Dockerfile anpassen.
Wie wir sehen können, bietet Docker eine Open-Source-Lösung zum Packen und Verteilen von containerisierten Anwendungen. Mit der Anzahl der Container wächst jedoch auch die Komplexität ihrer Verwaltung. Daher ist es wichtig, einige Aspekte (die in einige Orchestrierungsaufgaben fallen) sicherzustellen, nämlich:
Um diese und andere Komplexitäten zu bewältigen, hat Docker entwickelt Docker-Schwarm, eine Container-Orchestrierungstechnologie. Genauer gesagt ist dies (der Docker-Schwarm) die Docker-Technologie, die normalerweise mit Kubernetes verglichen wird, nicht mit der gesamten Docker-Plattform selbst.
In der Tat Docker ist die Standard- und zugrunde liegende Technologie für Kubernetes, das Docker nativ als Laufzeit verwendet und Images auf die gleiche Weise abruft, wie Entwickler es manuell tun würden, d. h. mit einem Docker-Befehl. Kubernetes unterstützt jedoch auch andere Alternativen zu Docker.
Wie Sie vielleicht aus dem vorherigen Absatz erraten haben, Kubernetes ist eine Container-Orchestrierungstechnologie (z. B. wie OpenShift oder ECS), und Google hat es 2014 eingeführt, ein Jahr nach der Veröffentlichung von Docker. Heutzutage wird es gesteuert von CNCF (Cloud Native Computing Foundation).
Kubernetes wurde entwickelt, um Benutzern zu helfen Planung, Verwaltung, Automatisierung der Bereitstellung und Skalierung containerisierter Anwendungen. Es handelt sich um eine Technologie, die die Containerisierung und die entsprechenden Workloads bewältigt, indem sie die Komplexität des effizienten Umgangs mit einer großen Anzahl von Containern auf verschiedenen Servern bewältigt.
In diesem Sinne bietet Kubernetes eine Open-Source-API, die reguliert, wie und wo Container ausgeführt werden. Bei dieser Technologie werden Container in folgende Gruppen gruppiert Hülsen, die grundlegende Betriebseinheit für Kubernetes. Einmal gruppiert, können Container und Pods einfach in einen anderen Zustand skaliert werden, und Entwickler können ihren Lebenszyklus kontrollieren.
Daher ermöglicht Kubernetes die Orchestrierung virtueller Maschinen (VMs) und ermöglicht es Entwicklern, Container so zu planen, dass sie auf diesen VMs ausgeführt werden, je nach ihren Rechenressourcen und den Anforderungen jedes Containers. Ganz einfach ausgedrückt: Wenn Entwickler Code veröffentlichen müssen, geben sie einfach an, welcher Cluster aktualisiert werden muss, und Die Plattform kümmert sich um das Verbindungsmanagement.
Darüber hinaus Kubernetes unterstützt eine Vielzahl von Containerisierungstools, einschließlich Docker, was uns zum nächsten Thema führt.
Wie bereits erwähnt, wenn wir vergleichen wollten Docker im Vergleich zu Kubernetes, dann wäre ein fairerer Vergleich zwischen Docker Swarm und Kubernetes, bei denen es sich bei beiden um Container-Orchestrierungstechnologien handelt. Um ehrlich zu sein, mag Docker den Marktanteil bei der Containerisierung anführen, aber es ist nicht so erfolgreich, wenn wir uns die Orchestrierungstechnologie ansehen. Kubernetes ist umfangreicher und führend in diesem Rennen, und zwar 80,9k Sterne auf Github verglichen mit den 5,8.000 Sternen von Docker Swarm.
Docker selbst und Kubernetes sind es in der Tat ergänzende Technologien. Obwohl beide ähnliche Rollen haben, sind sie tatsächlich sehr unterschiedlich und können perfekt zusammenarbeiten. Wie jetzt klar ist, ist Docker eine der wichtigsten Basistechnologien von Kubernetes, die wiederum in der Lage ist, die von Docker instanzierten Container vollständig über eine Steuerungsebene zu verwalten.
Darüber hinaus umfasst Kubernetes zahlreiche Funktionen, die vorteilhaft sind bei der Container-Orchestrierung, z. B. in den Bereichen Load-Balancing, Sicherheit, Networking, integrierter Isolationsmechanismus, Selbstheilung und Skalierbarkeit über alle Knoten hinweg, die auf den erstellten Containern laufen.
Wir müssen verstehen, wie nützlich beide sind, um das Beste aus der Kombination zwischen Docker und Kubernetes herauszuholen. Laut dem Bericht von 2020 über „Stand der Cloud-Native-Entwicklung“Trotz der Beliebtheit von Containern verwendet nicht jeder Orchestrierungstechnologien, um sie zu verwalten. Der Grund dafür liegt in der Tatsache, dass nicht jeder sie benötigt, insbesondere wenn mit kleinen Anwendungen und einer geringen und kontrollierbaren Anzahl von Containern gearbeitet wird.
Genauer gesagt, wenn die Softwareanforderungen wachsen, müssen die erforderlichen Anwendungen auch bei der Containerisierung skaliert werden. Um also wirklich von der Microservices-Architektur zu profitieren, alle Anforderungen müssen erfüllt sein. Andernfalls wird die Containerisierung nicht zu einem Vorteil, sondern zu einer weiteren Belastung im Tech-Stack.
Deshalb Die Verwendung von Kubernetes oder einem ähnlichen Tool ist nicht zwingend erforderlich; es wird jedoch dringend für Infrastrukturen empfohlen, die skaliert werden möchten und die eine sehr hohe Anzahl von Containern in verteilten Systemen verarbeiten müssen. Laut dem Bericht für 2020 „Container im Unternehmen — Die schnelle Einführung in Unternehmen setzt sich fort“ durchgeführt von IBM Market Development & Insights, nur 15% der Befragten Niemals verwenden Container ohne Orchestrierungslösungen.
Darüber hinaus sind dies nach Angaben der Befragten die Die wichtigsten Vorteile der Verwendung von Orchestrierungslösungen:
Wie angekündigt am Veröffentlichung von Kubernetes 1.20,“Die Docker-Unterstützung im Kubelet ist jetzt veraltet und wird in einer zukünftigen Version entfernt.„. Anfangs löste dies ein wenig Panik aus, da viele Entwickler dachten, dies wäre das Ende von Docker und folglich das Ende der großartigen Kombination von Docker und Kubernetes. Zum Glück veröffentlichte Kubernetes am 2. Dezember 2020 einen Blogbeitrag, in dem das klargestellt wurde“Es ist nicht so dramatisch wie es klingt„.
Wie sie erklären, gibt es in einem Kubernetes-Cluster eine Sache namens „Container-Laufzeit“, die zum Abrufen und Ausführen der Container-Images verwendet wird. Docker ist die beliebteste Option für diese Laufzeit, und das Problem ist es wurde nicht für die Einbettung in Kubernetes konzipiert.
Die Container-Laufzeit ist menschenfreundlich gestaltet — was Docker noch besser macht. Für Menschen. - aber nicht sehr geeignet für eine Software wie Kubernetes. Folglich muss Kubernetes Folgendes verwenden Dockershim um das zu bekommen, was es wirklich braucht und enthalten ist. Dies ist bei weitem nicht die ideale Lösung für Kubernetes, da es sich um eine zusätzliche Technologie handelt, die gewartet und verwaltet werden muss.
Zusammenfassend heißt es in der Ankündigung wirklich, dass Dockershim wird aus Kubelet entfernt, die Unterstützung für Docker wird entfernt als Container-Runtime. Das bedeutet, dass von Docker produzierte Bilder werden weiterhin funktionieren wie üblich im Kubernetes-Cluster eines Entwicklers.
Auch wenn dies nicht unbedingt der beste Ansatz für jeden Workload oder jede Anwendung ist, die Vorteile der Containerisierung haben die Aufmerksamkeit vieler Entwickler und Unternehmen auf sich gezogen. Zu den wichtigsten Vorteilen gehören eine verbesserte Anwendungsqualität, eine verbesserte Produktivität, geringere Ausfallzeiten von Anwendungen und eine schnellere Reaktion auf Änderungen.
Aber wie können Dockers und Kubernetes zusammenarbeiten, um das Beste aus der Containerisierung herauszuholen?
Auf der einen Seite Docker ermöglicht es Entwicklern, ihre Anwendungen über die Befehlszeile in isolierte Container zu packen. Danach können diese Anwendungen in den IT-Umgebungen der Entwickler ausgeführt werden.
Auf der anderen Seite Kubernetes bietet eine Orchestrierungslösung, die Containerisierungsaufgaben wie Verwaltung, Skalierung, Bereitstellung und Vernetzung während des gesamten Lebenszyklus der Anwendung plant und automatisiert.
Deshalb Docker und Kubernetes können — und sollten — sich oft ergänzen. Darüber hinaus kombiniert man diese Technologien mit DevOps-Praktiken kann eine Grundlage für eine Microservices-Architektur bieten, die eine schnelle Bereitstellung sowie Skalierbarkeit von Cloud-nativen Anwendungen ermöglicht.
Marketing-Praktikant mit besonderem Interesse an Technologie und Forschung. In meiner Freizeit spiele ich Volleyball und verwöhne meinen Hund so gut es geht.
Experte für Sicherheit und Cloud-Betrieb. Hintergrund in den Bereichen öffentlicher Verkehr, Finanzen und Regierung. Normalerweise handelt es sich um den Handel mit Münzen an dezentralen Börsen:)
People who read this post, also found these interesting: