2017-10-12 1 views
1

Ich versuche Docker zu lernen und dafür auf Online-Materialien zu verweisen. Ich habe erfahren, dass es eine offizielle Drehscheibe von Bildern gibt, die wir ziehen können, und einen Container betreiben.Haben alle Docker-Images ein minimales Betriebssystem?

Die repos sind https://hub.docker.com/, Teil Screenshot zur Verfügung:

enter image description here

In diesem Diagramm wir die offiziellen Bilder von ubuntu sehen können, httpd, MySQL (und so weiter).

Meine Frage ist:

Haben alle diese Bilder haben „minimal OS“, auf dem sie ausgeführt werden. Zum Beispiel, wenn wir httpd Bild betrachten, hat es das benötigte Betriebssystem, auf dem es läuft?

+0

Sie sollten sich die offizielle Docker-Dokumentation ansehen: https://docs.docker.com/get-started/ –

+0

Sie benötigen Programme, die wiederum Bibliotheken benötigen usw.Diese kommen als Dateien im Docker-Image und werden bei Bedarf aufgerufen. Docker stellt den Kernel zur Verfügung, mit dem sie sprechen. Für eine Java Docker-Maschine können Sie sich _ _ ohne die JVM und die benötigten Bibliotheken verstehen. –

+0

Bedeutet das, dass wir ein Image ohne Betriebssystem haben können? – CuriousMind

Antwort

2

Die meisten Bilder basieren auf einer Distribution, wie Sie sie in ihren Dockerfiles sehen können. Bis auf die Verteilungsbilder selbst. Sie haben ein anderes Basisbild, das scratch genannt wird.

können Sie die Bilder überprüfen sie auf basieren, wenn Sie die Projektseite auf DockerHub besuchen, zum Beispiel https://hub.docker.com/_/httpd/

Ihre Dockerfiles referenziert und Sie können sie, indem Sie auf sie, zum Beispiel überprüfen Die erste Markierung "2.2" bezieht sich auf this file. Die erste Zeile in der Dockerfile ist FROM debian:jessie und zeigt, dass es auf einem Debian-Image basiert.

Es ist weit verbreitet, ein getrenntes Tag mit dem Postfix -alpine darin zu haben, um anzuzeigen, dass alpine linux verwendet wird, das ein viel kleineres Basisbild als das Debian-Bild ist. Dies führt zu einem kleineren Bild des httpd-Bildes, da das Basisbild viel kleiner ist.

1

Die ganze Idee ist, dass das gesamte Bild vollständig stand-alone läuft auf Hardware/Virtualisierungsebene. Und so (der Profi :) kann auch nicht von etwas anderem beeinflusst werden, als das Teil des Bildes ist.

Jedes Bild enthält ein vollständiges Betriebssystem. Spezielle Docker gemacht OSs kommen mit ein paar Megabyte: zum Beispiel linux Alpine das ist ein Betriebssystem mit 8 Megabyte!

Aber größere OS wie Ubuntu/Windows können ein paar Gigabyte sein. Beide haben ihre Vorteile, da docker ein Bild in Ebenen aufteilt. Wenn Sie also ein Basisbild zweimal verwenden (Befehl FROM, siehe N20 Antworten), wird diese Ebene nur einmal heruntergeladen.

Kleinere OS hat das Pro von nur ein paar Megabyte herunterladen müssen. aber für jede (Linux) Bibliothek, die Sie verwenden möchten, müssen Sie & selbst herunterladen. Diese benutzerdefinierte Ebene wird dann nur in Ihrem eigenen Bild verwendet und wird daher nicht in anderen Bildern wiederverwendet und erstellt somit eine zusätzliche Downloadschicht für den Kunden & Megabyte, die die Benutzer herunterladen müssen, um Ihr Bild zu starten.

Wenn Sie ein Bild aus dem Nichts, damit Sie Ihren dockerfile mit beginnen:

FROM scratch 

Aber dies wird nicht empfohlen, wenn Sie wirklich wissen, was Ihr tun und/oder Sie hobbying um.

+0

Danke für Ihre Antwort. Ist es also immer so, dass Bilder zwangsläufig ein minimales Betriebssystem haben? Ich bin immer noch nicht klar :( – CuriousMind

+1

Nicht alle Bilder sind gleich. Zum Beispiel: Bitnami php-fpm: 7.2.1-r0 Bild ist 253MB in 15 Schichten. Kreable/php70: neueste ist 1,21 GB in 45 Schichten. Also, sogar Wenn sie das gleiche Basisbild haben, beeinflusst die tatsächliche Schichtung und die Art, wie Sie nach der Installation der Abhängigkeiten nach Ihnen selbst bereinigen, die endgültige Bildgröße: Es ist ein Gleichgewicht zwischen Wiederverwendbarkeit (aber wahrscheinlich größeren Ebenen) und Minimalismus (aber wahrscheinlich nicht wiederverwendbar genug, um den zusätzlichen Aufwand zu rechtfertigen). –

Verwandte Themen