2015-06-10 11 views
5

Ich bin neu mit Docker, und ich habe den Zweifel, eine Bildbasis für meinen Stapel zu verwenden, oder ich muss jedes Bild je nach meinen Bedürfnissen definieren.
Zum Beispiel lesen, ein Blog über eine Website mit Docker Erstellung des Autor schlägt vor, die folgende Stack: enter image description hereDocker: Wie erstelle ich einen Stapel, mehrere Bilder oder ein Basisbild?

Bild von http://project-webdev.blogspot.de/2015/05/create-site-based-on-docker-part4-docker-container-architecture.html
nun genommen, um die Struktur zu sehen, wenn wir für Technologien Basisbilder in der Docker Registrierung haben wie mongoDB, io.JS, nginx, Warum verwenden wir in diesen Beispielen nicht diese Bilder ohne ein einziges Docker-Basisbild für alles zu verwenden?

Antwort

1

ich nehme an, es hängt von der Anwendung ab, aber in diesem Fall hast du Recht, es macht keinen Sinn, ein großes Basisbild zu haben.

Aus meiner Sicht hat der Autor ein Basisbild erstellt und dann eine Menge anderer Bilder aus diesem Basisbild erstellt. Wenn Sie ein Image für Docker erstellen, werden viele Zwischenimages erstellt. Wenn das Basisimage identisch ist, kann es geteilt werden und möglicherweise Speicherplatz auf Ihrem Computer sparen.

aber ich denke nicht, dass es einen Unterschied macht, wenn Sie die Container laufen lassen. Jeder Container ist unabhängig und sie teilen im Wesentlichen nur den Linux-Kernel. und es ist wirklich sehr schlecht, weil das Basis-Image in diesem Fall riesig ist und es eine Menge an Ressourcen braucht, um einen Container aus einem Bild wie diesem zu spawnen. Die dedizierten Images für jeden Service sind viel kleiner und benötigen weniger Ressourcen, wenn Sie Container von ihnen starten. also ja, was auch immer Sie an Speicher für ein großes Basisbild sparen könnten, es wird sich nicht lohnen.

5

Ich bin der Autor dieses Blogbeitrags/Serie, also lassen Sie mich den Grund erklären, warum ich ein Grundbild gewählt habe. :)

Docker bietet die Möglichkeit, ein gemeinsames Basisbild für nachfolgende Bilder zu verwenden, so dass Sie alle Bilder stapeln können und jedes Bild nur das Diff zum darunter liegenden Bild enthält (das ist der große Vorteil von docker!). Sie können Speicherplatz und Arbeitsspeicher sparen. Wenn Sie sich nicht darum kümmern (ich meine, RAM und Speicher sind billig), können Sie auch mehrere Bilder verwenden.

Ein weiterer Vorteil eines Basisimages besteht darin, dass Sie dieses Basisimage basierend auf Ihren Anforderungen konfigurieren/sichern können. Wenn Sie für jeden Container ein anderes Basis-Image verwenden, müssen Sie alle davon verwalten (z. B. eine Firewall), und Docker lädt mehrere verschiedene Images herunter (benötigt mehr Speicherplatz, Container-Builds dauern länger).

Aber was ist der Unterschied, wenn Sie die offiziellen Bilder betrachten? Die offiziellen mongodb-, redis- und MySQL-Bilder basieren auf dem debian: wheezy-Bild. Wenn Sie also diese Bilder verwenden, basieren sie auch auf dem gleichen Basisbild, nicht wahr?

Wie auch immer, wenn Sie Ihre eigene Architektur verwenden möchten, fühlen Sie sich frei ... bitte betrachten Sie diese Architektur/Blogpost als mögliche Idee, ein Docker-Setup zu erstellen. Dank Docker und so, wie sie den Kernel teilen, können Sie so viele Bilder verwenden, wie Sie möchten. :)

Grüße,

Sascha

+0

Hallo @Sascha Dank für die Beantwortung. Jetzt kann ich Ihre Entscheidung anhand eines einzigen Bildes besser verstehen. Wie kann ich Sie erreichen, um über einige Zweifel an einem Projekt, an dem ich gerade arbeite, zu sprechen? – eduartua