Während ich in Docker, Google Cloud und Kubernetes eintauche und noch nicht alle drei klar verstanden habe, scheinen sich diese Produkte zu überschneiden, sind aber nicht kompatibel.
Beispielsweise muss eine docker-compose.yml
Datei neu geschrieben werden, damit eine App für Kubernetes bereitgestellt werden kann.
Könnte jemand eine allgemeine, grobe Beschreibung geben, wo sich Docker, Docker Compose, Docker Cloud und Kubernetes überschneiden und wo eines vom anderen abhängig ist?
quelle
Neben @ yamenk's Antwort möchte ich hier einige Details hinzufügen, die den Menschen auf ihrem Weg zum Verständnis von Kubernetes helfen könnten.
Kurze Antwort:
docker-compose
: ist ein Tool , das eine YAML-Datei verwendet, die Ihre Multi-Container- Anwendung beschreibt und Ihnen hilft , alle diese Container zu erstellen , zu starten / zu stoppen und zu entfernen , ohne mehreredocker ...
Befehle für jeden Container eingeben zu müssen.Kubernetes
: ist eine Plattform für die Verwaltung von containerisierten Workloads und Services, die sowohl die deklarative Konfiguration als auch die Automatisierung erleichtert. Was? 🤔 Lesen Sie weiter ...Docker Compose
Kubernetes
Viele Leute argumentieren, dass Kubernetes schwer zu lernen ist. Das liegt daran, dass es eine Reihe von Problemen löst und die Leute versuchen zu verstehen, ohne alle Voraussetzungen zu kennen. Das macht es kompliziert. Beginnen Sie mit dem Zusammensetzen der Puzzleteile, indem Sie über Konzepte / Begriffe wie die folgenden lesen. Dieser Prozess hilft Ihnen zu verstehen, welche Probleme Kubernetes zu lösen versucht:
Und da Container und deren Verwaltung viele verschiedene Aspekte aufweisen, sollten Sie die Cloud Native-Landschaft im Auge behalten:
Interaktive Version hier: Landschaft.cncf.io/
Aktualisierung
quelle
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deployWenn Sie Netzwerkcontainer mit demselben Host verwenden, wählen Sie Docker Compose .
Wenn Sie Container auf mehreren Hosts vernetzen, entscheiden Sie sich für Kubernetes .
quelle
Die erste Unterscheidung besteht zwischen der Container-Engine und dem Container-Orchestrator.
docker
ist eine Container-Engine, mit der Sie in der Regel höchstens einen Container lokal auf Ihrem PC für Entwicklungszwecke erstellen und ausführen können.docker-compose
ist ein Docker-Dienstprogramm, mit dem mehrere Container ausgeführt und über die Docker-Engine-Funktionen Volumes und Netzwerke gemeinsam genutzt werden können. Es wird lokal ausgeführt, um die Dienstzusammensetzung zu emulieren, und remote auf Clustern.Kubernetes ist eine Container-Orchestrierungsplattform, die sich um die Ausführung von Containern und die Verbesserung der Engine-Funktionen kümmert, sodass Container für komplexe Anwendungen (Art von PaaS, die von Ihnen oder dem Cloud-Anbieter verwaltet werden) zusammengestellt und skaliert werden können. Die Hauptfunktion von Kubernetes besteht darin, die Infrastruktur mithilfe von Containern von der Anwendung zu entkoppeln. Sie ist auch für andere Engines offen, die Docker beispielsweise zum Ausführen von Containern mit rkt oder cri-o verwenden kann.
Docker Cloud ist auch ein PaaS-Angebot, mit dem Sie Container über die
docker
Engine-API ausführen und orchestrieren können .Abhängig von Ihren Anforderungen, der Kontrolle über die Infrastruktur und die Zielgruppe können Sie jetzt entweder Kubernetes auf Baremetal oder Azure ACS oder Google GKE usw. verwenden.
Hoffe das hat geholfen :) Grüße
quelle
Docker Compose ist kein produktionsfertiges Tool. Es funktioniert hervorragend für PoC- oder Entwicklungsumgebungen, es fehlen jedoch viele der Funktionen, die mehr oder weniger für den ernsthaften Einsatz in der Produktion erforderlich sind. Swarm ist produktionsbereiter, aber ich würde niemals in Swarm in einem Greenfield-Szenario investieren. Kubernetes hat den Orchestrierungskampf gewonnen, wie die Aufnahme in Docker Desktop zeigt und von allen großen Cloud-Anbietern angeboten wird. Kubernetes ist viel leistungsfähiger und bietet weitaus mehr Community- und Unternehmensunterstützung.
Ich würde empfehlen, in einige der Kubernetes-Tutorials von Pluralsight, Linux Academy usw. einzutauchen und einen Cluster zu erstellen, mit dem Sie in der Cloud-Plattform Ihrer Wahl (EKS, AKS, GKE usw.) herumspielen können. Wenn Sie versuchen, sich mit Bare Metal zu beschäftigen, schauen Sie sich OpenShift an, aber erkennen Sie, dass Sie in diesem Setup etwas von der Magie von Kubernetes verlieren.
quelle
Docker Compose:
In einer
docker-compose.yml
Datei kann jeder Eintrag optionaldocker-compose
ein Bild erstellen. Jeder Eintrag kann einen einzelnen Container darstellen, den wir erstellen möchten, und jeder Eintrag definiert die Netzwerkanforderungen oder Ports.Kubernetes:
Kubernetes erwartet, dass alle Images bereits erstellt wurden und es eine Konfigurationsdatei pro Objekt gibt, die wir erstellen möchten, und wir müssen alle Netzwerke manuell einrichten.
Wir stellen also sicher, dass unser Image auf Docker Hub gehostet wird, erstellen eine Konfigurationsdatei zum Erstellen des Containers und eine Konfigurationsdatei zum Einrichten des Netzwerks.
quelle
Docker-Compose ist eine Bereitstellungsdatei, die einen oder mehrere Container mit ihrer Umgebung vordefiniert, z. B. Volumes, Netzwerk, einen auszuführenden Befehl usw.
Kubernetes hingegen ist ein System, das Docker-Container und andere Mikrodienste mithilfe von koordiniert und über mehrere Knoten hinweg skaliert und zuverlässig macht
quelle
Docker compose: Docker-Container können direkt ohne Unterstützung einer beliebigen Yaml-Datei ausgeführt werden. Mit Hilfe von Docker Compose Tool können Containereigenschaften jedoch in einer Datei namens docker-compose.yml definiert werden. Weitere Informationen finden Sie in der folgenden Beispiel-Yml-Datei.
Name des Bildes, Anzahl der Replikate usw. können über die XML-Datei konfiguriert werden.
Kubernetes: Dies ist eine Containerverwaltungsplattform, die auf Docker von Google ausgeführt wird. Docker Swam ist eine weitere Containerverwaltungsplattform, die von Docker selbst erstellt wurde. Kubernetes bietet auch die Möglichkeit, Konfigurationen für Pods (entsprechend dem Container im Docker) in einer Yaml-Datei wie Docker Compose zu speichern. Beispiel Yaml-Datei
Hier können auch Bilder, zu öffnende Ports und Pod-Host-Port-Zuordnungen usw. angegeben werden. kubectl apply -f ist wie docker compose der Befehl zum Ausführen dieser Datei.
quelle