2016-10-01 4 views
3

Ich bin mir nicht sicher, was die beste Vorgehensweise bei der Verwendung des Docker-Containers ist. Wenn ich VM benutze, sagen wir ubuntu, um eine Webanwendung zu starten, installiere ich jede Software, die ich brauche, um die Anwendung wie Datenbank, Webdienste usw. auszuführen und benutze sie wie ein eigenständiges Betriebssystem.docker os container vs. app container

Docker kann jedoch auf andere Weise verwendet werden.

In einem vorgegebenen Szenario, das ich eine Web-Anwendung ausgeführt werden soll, habe ich zwei Optionen:

  1. alle Software auf einem Container installieren; installiere Datenbank, Java und alle anderen notwendigen Software, die benötigt werden um zu laufen (d. h. benutze genau wie ich VM benutzen würde).

  2. Installieren Sie jede Anwendung auf einem separaten Container; Datenbank in einem Container, Web-Service in einem anderen Container, und lassen Sie sie miteinander reden.

Die Option 1) scheint eine Voll gestapelt Anwendung bereitstellen leichter zu sein, sondern kann schwieriger sein, zu skalieren, wenn es einige Abhängigkeits Komplikation Probleme zwischen den Paketen sind oder an jede Software OS Zuteilung von Ressourcen.

Die Option 2) scheint schwieriger zu implementieren, aber jeder Container kann ohne zu viel Schmerzen aktualisiert werden.

Was ist unter Docker-Benutzern allgemein üblich?

Edit: Antwort ist auch zu beachten in https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-container

Antwort

4

Der beste Weg ist es, einen separaten Behälter für jeden Dienst (Anwendung) zu verwenden. Auf diese Weise können Sie jeden Service unabhängig von den anderen Containern aktualisieren/aktualisieren. Docker funktioniert wirklich gut für die Micro Service Architektur.

Verwenden Sie Docker Compose zum Ausführen aller Container mit nur einem Befehl: docker-compose up. In Docker Compose können Sie Abhängigkeiten zwischen Containern definieren. Also werden sie sich automatisch verbinden.

Wenn Sie jeden Container auf einem separaten Linux-Host ausführen möchten, können Sie Docker Swarm verwenden, damit Sie sich nicht um das Netzwerk kümmern müssen.