Docker und OpenShift sind beide Frameworks zur Implementierung eines PaaS-Dienstes.
Wie vergleichen sie sich in Architektur und Funktionen?
Antworten:
Der Hauptunterschied besteht darin, dass Docker als Projekt nur auf den Laufzeitcontainer ausgerichtet ist, während OpenShift (als System) sowohl den Laufzeitcontainer als auch die REST-API, die Koordination und die Webschnittstellen zum Bereitstellen und Verwalten einzelner Container enthält.
OpenShift und Docker vergleichen nur die Laufzeitcontainer und verwenden Kernel-Isolationsfunktionen, um Mandantenprozesse getrennt zu halten. Für Docker hauptsächlich über LXC und für OpenShift hauptsächlich über SELinux und Multiple Category Security (MCS). Beide verwenden cgroups, um die CPU, den Speicher und die E / A der Mandanten zu begrenzen. Upstream OpenShift prüft LXC, um den langfristigen Aufwand zu reduzieren.
Docker verwendet AUFS für die erweiterte Freigabe von Datenträgern und Dateien beim Schreiben. OpenShift erfordert ein solches System weder und ist auch nicht mit diesem kompatibel.
Innerhalb des Containers modelliert OpenShift Funktionseinheiten (Webserver, Datenbank) über "Cartridges", bei denen es sich um eine Reihe von Shell-Skript-Hooks handelt, die beim Aufrufen des Systems aufgerufen werden. Die API wird hier beschrieben . Eine Kassette ähnelt in etwa einem Docker-Image.
Openshift beschreibt auch die API, über die ein Broker (Koordinator) mit Knoten (Servern, die mehrere Mandantencontainer hosten) kommuniziert, um Endpunkte in diesem Container aufzurufen.
BEARBEITET ZUM HINZUFÜGEN: Ab Juni 2015 läuft OpenShift Origin 1.0 auf Docker und Kubernetes, und Sie können Multi-Container-Apps erstellen und entwickeln, die zur Docker-Laufzeit ausgeführt werden. OpenShift fügt zusätzlich zu Kube und Docker Build-, Image-Workflow- und Promotion-Funktionen sowie sichere Container-Cluster-Vorgänge hinzu
Ich dachte, ich sollte die Antworten auf diese Frage mit Informationen aktualisieren, die Ende 2018 verfügbar sind.
Die derzeitige Situation ist etwas komplizierter als zu dem Zeitpunkt, als die Frage ursprünglich gestellt wurde. Derzeit ist Docker Inc. der Hauptentwickler von Docker und Moby - derzeit das Upstream-Projekt für die Docker-Laufzeit und die kommerzielle Enterprise-Edition von Docker, fantasievoll Docker Enterprise Edition genannt.
Eine zeitgemäße Analyse dieser Frage würde zu einem Vergleich von Docker Enterprise Edition mit RedHat OpenShift führen. Diese Containerplattformen stehen in direktem Wettbewerb miteinander und beide gelten als Kubernetes-Distributionen, die vor Ort und in der Cloud ausgeführt werden können. Zum Zeitpunkt des Schreibens ist Docker-EE von Docker Inc. führend in Bezug auf Funktionen und Umsatz, aber es gibt eine starke Konkurrenz durch die Public-Cloud-Anbieter, die kubernetes Platform (s) als Service anbieten und starten um in fortgeschrittenere Serverless Container Platforms zu wechseln.
Ich habe in den letzten zwei Jahren einige interessante Lesungen zu diesem Thema gefunden:
Hier ist bei weitem die beste Erklärung für Anfänger. https://deis.com/blog/2016/kubernetes-illustrated-guide/
Dies ist kein Scherz, manchmal müssen wir die Dinge so betrachten, wie es ein Kind tun würde, um wirklich zu verstehen.
Ich würde nicht sagen, dass sie sogar vergleichbar sind. Openshift ist eine Unternehmenslösung von redhat, die auf Kubernetes aufbaut. Kubernetes ist nur ein Framework zur Organisation und Automatisierung der Arbeit mit Docker-Containern. Ich würde mit dem Video beginnen und dann Kuperneten auf einer niedrigeren Ebene betrachten. Wenn Sie sich wohl fühlen, schauen Sie sich die Funktionen an, die OpenShift hinzufügt.
Openshift ist eher eine Abstraktionsschicht für die Container-Orchestrierung. Openshift verwendet intern Kubernetes für die Container-Orchestrierung. Kubernetes ist ein Container-Orchestrierungssystem für Docker-Container, das im Vergleich zum Docker-Schwarm umfangreicher ist.
Openshift ist die perfekte Plattform für die Bereitstellung einer Unternehmensanwendung, da es die Source-to-Image-Funktion (S2I), die Container-Orchaestrierung, die Serviceerkennung, die Skalierung der Services und das Erstellen von Pipelines bietet. All dies erfolgt sowohl mit der CLI als auch mit dem OpenShift-Dashboard, das eine gute Benutzeroberfläche bietet. Docker verfügt über einen Docker-Schwarm für die Container-Orchestrierung, aber viele Dinge müssen manuell ohne benutzerfreundliche Schnittstellen ausgeführt werden.