2015-06-13 9 views
45

Ich bin ein Java-Entwickler. Wir verwenden Weblogic, um unsere Anwendungen zu hosten. Mir wurde gesagt, ich solle Weblogic durch eine opensource Alternative ersetzen. Wir planen die Verwendung mit SpringBoot. Wir schauen auch auf Docker/Cloud Foundry. Docker/Cloud Foundry ist jedoch Neuland für mich.Was ist der Unterschied zwischen Cloud Foundry und Docker?

  1. Kann jemand bitte sagen Sie mir den Unterschied zwischen Cloud Foundry und Docker?
  2. Wenn wir Docker verwenden, aber nicht Cloud Foundry, was fehlt uns heraus?
  3. Wenn wir Cloud Foundry verwenden, aber nicht Docker, was auf uns zu verpassen?

Vielen Dank für Ihre Hilfe.

+0

wäre es richtiger sein Docker zu vergleichen mit [Warden] (https: // Github .com/cloudfoundry/warden) (verwendet unter der Haube von CF). –

+0

http://heidloff.net/nh/home.nsf/article.xsp?id=20.02.2015092308NHEBUJ.htm – satks

+1

Sie keine PaaS (Platform as a Service) mit einem Container technogloy vergleichen können. Eine Containertechnologie ist nur ein kleiner Teil von Cloud Foundry. –

Antwort

105

Docker ist eine Technologie zum Erstellen und Ausführen von Linux- "Containern". In gewissem Sinne können Sie sich diese als leichte VMs vorstellen. Ein Docker Behälter für SpringBoot App wird von einem Docker Bild bestehen, das ist im Grunde ein Dateisystem mit all den Dingen enthalten wird benötigt, um Ihre App (JVM, der Quellcode, etc.), und Docker Container Metadaten laufen, die den Docker Daemon erzählt, wie um die App innerhalb des Images auszuführen (z. B. welche Umgebungsvariablen zu setzen sind, welche Ports zu belichten sind, welche Befehle ausgeführt werden sollen usw.). Der Docker-Daemon verwendet Linux-Funktionen wie Cgroups und Kernel-Namespaces, um den Container isoliert von anderen Prozessen auszuführen, die auf dem Hostcomputer ausgeführt werden. Docker ist etwas low-level, in dem Sie alles angeben müssen, was in das Image hineingeht, und es führt beliebige Dinge aus, nämlich was auch immer Sie in Ihr Image einfügen und sagen, dass es laufen soll. Der Dockercontainer, den Sie erhalten, ist sehr portabel. Sie können Ihren Andockcontainer also für die Entwicklung lokal erstellen, testen und ausführen und dann diesen Container an einen Produktionshost senden, auf dem auch ein Dockerdämon ausgeführt wird Du bekommst genau dasselbe.

Cloud Foundry arbeitet auf einer höheren Abstraktionsebene, wobei Anwendungen ein erstklassiges Konzept darstellen. Cloud Foundry verwendet Container-Technologie ähnlich wie Docker, um portable Images zu erstellen und sie dann auszuführen, aber es ist ein Implementierungsdetail und Sie müssen nicht alle Details angeben. In neueren Versionen von Cloud Foundry werden Docker-Images ebenfalls unterstützt, sodass Sie die Details angeben können, wenn Sie möchten, aber es verfügt auch über einen "Buildpack" -Workflow, bei dem eine Java-Anwendung automatisch erkannt wird, wenn Sie Ihre App pushen enthält alle für die Java-Laufzeit erforderlichen Dinge, wenn das Image erstellt wird.

Mit Cloud Foundry, da Anwendungen und Anwendungsmanagement erstklassige Konzepte sind, und da es auf einer höheren Ebene arbeitet, erhalten Sie alle möglichen Dinge kostenlos. Zum Beispiel können Sie Ihre App horizontal leicht skalieren (Instanzen hinzufügen), z. cf scale my_app -i 5 oder vertikal, cf scale my_app -m 2G (um den zugewiesenen Speicher für jede Instanz festzulegen). Sie erhalten Streaming-Anwendungsprotokolle: cf logs my_app. Cloud Foundry bietet Ihnen eine große Fehlertoleranz, wenn eine Ihrer Anwendungsinstanzen abstürzt oder der Prozess, der die Anwendungscontainer ausführt, abstürzt (ähnlich wie der Docker-Dämon) oder wenn die Host-VM den Container ausführt - Laufender Prozess stirbt oder der Hardware-Cluster, in dem sich diese VM befindet, Cloud Foundry bringt Ihre Instanzen automatisch zurück.

Der Docker-Daemon ist ein einzelner Prozess, den Sie auf jedem Linux-Rechner ausführen können. Wenn Sie also etwas Kleines und Einfaches tun und die meisten Einstellungen selbst vornehmen müssen, kann es einfacher sein, sowohl lokal als auch in der Entwicklung mit docker aufzustehen. Mit Docker ist es auch einfacher, Zugriff zu haben und das von Ihnen erstellte Docker-Image freizugeben. Sobald Sie ein Image erstellt haben, können Sie es in ein Docker-Repository einfügen und dann auf einem anderen Docker-Dämon ausführen. Bei Cloud Foundry handelt es sich bei dem erstellten Image im Allgemeinen um ein Implementierungsdetail, auf das Sie nicht wirklich zugreifen können. Sie konnten dieses Image beispielsweise nicht extrahieren und es nicht in einer anderen Cloud Foundry-Installation ausführen.

Es gibt verschiedene Projekte gibt, soll Cloud Foundry zugänglicher und einfacher einzurichten machen, während Sie immer noch viele der Vorteile einer PaaS geben. Einige dieser Projekte zielen auch darauf ab, Ihnen die Verwendung von Docker und die Vorteile von Docker zu ermöglichen, während Sie gleichzeitig einen Großteil der PaaS-Vorteile von Cloud Foundry erhalten.

Siehe Lattice und Cloud Foundry on BOSH-Lite.

Es gibt auch mehrere gehostete Cloud Foundry Services.

Siehe Pivotal Web Services und IBM BlueMix

Es gibt auch viele Nicht-CF-Projekte sollten eine Plattform Schicht um den Kern Docker Technologie setzen, in beiden Läufen your-own und gehostete-Service Sorten.

Siehe Google's Kubernetes project und Amazon Container Service

Vollständige Offenlegung: Ich bin ein Software-Ingenieur auf Cloud Foundry arbeitet bei Pivotal

+0

Unterstützt Cloud Foundry mehrere Docker-Container? und unterstützt es mehr als einen Port? Wir wollen ELK Stack installieren und wir brauchen drei Ports. – powder366

+0

Sind die Ports für eingehenden Datenverkehr aus dem Internet oder für die Container-zu-Container-Kommunikation? Wenn das letztere, dann sollten Sie in der Lage sein, dies zu tun. Sie können sehen, wie ich Funken auf einer Instanz von Cloud Foundry Application Service [hier] (https://gist.github.com/Amit-PivotalLabs/7c86c92aae3123ac809e81795a41acfa#deploy-the-spark-cluster) zum Einsatz, die Bilder mehrerer Docker beinhaltet drängen und ihnen erlauben, über Hunderte von Häfen miteinander zu reden (da Spark anscheinend so funktioniert). –

+0

Eingehender Datenverkehr aus dem Internet, das heißt verwenden, um die normale Kibana und Elasticsearch WEB-Interface zwei zu nennen. Auch warum behalten die Behälter Zustand nicht? Wir haben Daten, die wir beim Neustart in den Containern behalten wollen. – powder366