2016-08-06 41 views
3

Ich verstehe, dass Docker in jeder Phase einer Dockerdatei eine Bildebene erstellt.Werden in Docker Bilder wiederverwendet, wenn mehrere Container auf demselben Host ausgeführt werden?

Wenn ich X-Container auf demselben Computer ausführen (wobei X> = 2) und jedem Container eine gemeinsame zugrunde liegende Image-Ebene (dh Debian) hat, behält Docker nur eine Kopie des Basisimages auf diesem Computer. oder hat es mehrere Kopien für jeden Container?

Gibt es einen Punkt, der zusammenbricht, oder gilt das für jede Ebene in der Dockerdatei?

Wie funktioniert das?

Beeinflusst Kubernetes dies in irgendeiner Weise?

+0

Sollte eine Ebene teilen, wenn es genau gleich ist, egal wie viele. Siehe: https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/ probiere etwas aus und komm zurück, wenn du auf ein bestimmtes Problem oder eine Frage stößt. – ldg

Antwort

5

Dockers Understand images, containers, and storage drivers Details die meisten davon.

Ab Docker 1.10 wird allen Layern, aus denen ein Image besteht, zum Zeitpunkt der Erstellung ein SHA256-Secure-Content-Hash zugewiesen. Dieser Hash ist für alle Hosts und Builds konsistent, solange der Inhalt des Layers derselbe ist.

Wenn eine beliebige Anzahl von Bildern eine Ebene gemeinsam hat, wird nur die 1 Kopie dieser Ebene gespeichert und von allen Bildern dieser Instanz der Docker-Engine verwendet.

Ein Tag wie debian kann sich im Laufe der Zeit auf mehrere SHA256-Image-Hashs beziehen, wenn neue Releases herauskommen. Zwei Bilder, die mit FROM debian erstellt werden, teilen sich nicht unbedingt Ebenen, nur wenn die SHA256-Hashs übereinstimmen.

Alle Inhalte, unter denen die Docker Engine läuft, verwenden dieses Speicher-Setup.

Diese Freigabe funktioniert auch in der Docker Registry (> 2,2 für die besten Ergebnisse). Wenn Sie Bilder mit Layern pushen möchten, die bereits in dieser Registrierung vorhanden sind, werden die vorhandenen Layer übersprungen. Das gleiche gilt für das Ziehen von Layern zu Ihrer lokalen Engine.

+0

Danke das war extrem klar! – IanEdington