Nicht-Volumendaten werden in einem Layer-Overlay-Dateisystem gespeichert (in den meisten Distributionen ist dies entweder ein AUFS oder DeviceMapper Dateisystem). Das Prinzip ist das gleiche in beiden Fällen (image source):
Wie bereits in den Kommentaren erwähnt, kann ich empfehlen den Abschnitt "Understand images, containers and storage drivers" von der offiziellen Dokumentation zu lesen. Diese Antwort ist nur eine kurze Zusammenfassung.
Jedes Docker-Image besteht aus mehreren Schichten von Dateisystemimages. Zum Beispiel könnte ein Apache + PHP-Bild bestehen aus (1) einem generischen Ubuntu-Basis-Layer, (2) einem zusätzlichen Layer mit installiertem Apache HTTP-Server und (3) einem weiteren Layer mit PHP-FPM und Konfigurationsdateien (nur ein Beispiel).
Wenn Sie einen neuen Container aus einem Bild starten, wird eine neue pro-Container-Ebene zu den vorhandenen Bildebenen hinzugefügt. Diese Ebene enthält alle Änderungen, die innerhalb des Containers selbst (in Nicht-Volume-Verzeichnisse) geschrieben werden.
In Bezug auf Ihre speziellen Fragen:
Wenn Sie alle Volumes nicht bestücken, würde es halten jede/some/die meisten/alle des Behälters Dateisystem im RAM?
Nein, es gibt nichts im RAM (neben den üblichen Dateisystem-Caches). Es befindet sich alles im Overlay-Dateisystem, das mithilfe von AUFS, DeviceMapper oder einem anderen Speichertreiber bereitgestellt wird.
Oder schreibt es eine Menge davon auf die Festplatte, was bedeutet, dass es in diesem Fall genauso langsam ist wie ein Volume?
Im Allgemeinen ist der Dateisystemzugriff in Volumes performanter als im Overlay-Dateisystem. Immerhin ist ein Volume (zumindest ein reguläres Host-basiertes Volume, das Volume-Treiber, die Netzwerkspeicher-Volumes hinzufügen, beiseite gelegt) einfach ein Bind-Mount an ein reguläres Verzeichnis im Host-Dateisystem, wobei das Layer-Dateisystem vollständig umgangen wird. Die Leistung von Volumina im Vergleich Dateisystem Schicht ist (neben anderen Themen) untersuchte in this paper:
AUF führt erheblichen Aufwand was nicht verwunderlich ist, da I/O wird durch mehrere Schichten gehen, [...] . Anwendungen, die Dateisystem- oder Festplattenintensiv sind, sollten AUFS mithilfe von Volumes umgehen. [...] Obwohl Container selbst fast keinen Overhead haben, ist Docker nicht ohne Performance-Probleme. Docker-Volumes haben eine deutlich bessere Leistung als die in AUFS gespeicherten Dateien.
Vorgeschlagene Lektüre: Abschnitt ["Bilder, Container und Speichertreiber verstehen"] (https: //docs.docker.com/engine/userguide/storer/imagesandcontainers /) aus der Dokumentation. – helmbert