Übersicht über Containerspeicher

Dieses Thema bietet eine Übersicht über die verschiedenen Arten, wie Container den Speicher unter Windows verwenden. Container verhalten sich bei der Speicherung anders als virtuelle Computer. Container werden von Natur aus so erstellt, dass eine App, die in ihnen ausgeführt wird, den Zustand nicht in das gesamte Dateisystem des Hosts schreiben kann. Container verwenden standardmäßig einen „sicheren“ Speicherplatz, aber Windows bietet auch eine Möglichkeit zur permanenten Speicherung.

Sicherer Speicherbereich

Windows-Container verwenden standardmäßig kurzlebigen Speicher. Alle E/A-Vorgänge des Containers erfolgen ein einem „sicheren Speicherbereich“ und jeder Container erhält einen eigenen „sicheren Speicher“. Die Dateierstellung und das Schreiben von Dateien werden im sicheren Speicherbereich erfasst und gelangen nicht zum Host. Wenn eine Containerinstanz beendet wird, werden alle Änderungen, die im sicheren Speicherbereich aufgetreten sind, verworfen. Wenn eine neue Containerinstanz gestartet wird, wird ein neuer sicherer Speicherbereich für die Instanz bereitgestellt.

Schichtspeicher

Wie in der Containerübersicht beschrieben, sind Containerimages ein Bündel von Dateien, die als Folge von Schichten dargestellt werden. Beim Schichtspeicher handelt es sich um die Dateien, die im Container integriert sind. Bei jedem docker pull und docker run des Containers sind diese identisch.

Wo Schichten gespeichert werden und wie Sie diese ändern

Bei einer Standardinstallation werden die Schichten unter C:\ProgramData\docker gespeichert und auf die Verzeichnisse "Image" und "Windowsfilter" verteilt. Sie können den Speicherort der Schichten mithilfe der docker-root-Konfiguration ändern, wie in der Dokumentation Docker-Modul unter Windows erläutert.

Hinweis

Für die Schichtspeicher wird nur NTFS unterstützt. ReFS und freigegebene Clustervolumes (Cluster Shared Volumes, CSVs) werden nicht unterstützt.

Sie sollten keine Dateien der Schichtverzeichnisse ändern – diese werden sorgfältig verwaltet mithilfe von Befehlen wie:

Unterstützte Vorgänge im Schichtspeicher

Beim Ausführen von Containern können die meisten NTFS-Vorgänge, mit Ausnahme der Transaktionen, verwendet werden. Dies beinhaltet das Festlegen von ACLs, wobei alle ACLs innerhalb des Containers geprüft werden. Wenn Prozesse mit mehreren Benutzern in einem Container ausgeführt werden sollen, können Sie Benutzer in Ihrer Dockerfilemit RUN net user /create ... erstellen, Dateizugriffssteuerungslisten festlegen und dann Vorgänge für diesen Benutzer mithilfe der Dockerfile-USER-Direktive konfigurieren.

Permanenter Speicher

Windows-Container unterstützen Mechanismen zur Bereitstellung von permanentem Speicher über das Binden von Bereitstellungen und Volumes. Weitere Informationen finden Sie unter Permanente Speicherung in Containern.

Speichergrenzwerte

Ein gängiges Muster für Windows-Anwendungen ist das Abfragen des Speicherplatzes vor der Installation oder vor dem Erstellen neuer Dateien oder als Auslöser für das Bereinigen temporärer Dateien. Zur Maximierung der Anwendungskompatibilität stellt das Laufwerk „C:“ in einem Windows-Container eine virtuelle Größe von 20 GB bereit.

Einige Benutzer möchten diesen Standardwert möglicherweise außer Kraft setzen und für den freien Speicherplatz einen kleineren oder größeren Wert konfigurieren. Dies kann durch die „size“-Option innerhalb der „storage-opt“-Konfiguration erreicht werden.

Beispiel

Befehlszeile: docker run --storage-opt "size=50GB" mcr.microsoft.com/windows/servercore:ltsc2019 cmd

Oder Sie können die Docker-Konfigurationsdatei direkt ändern:

"storage-opts": [
    "size=50GB"
  ]

Tipp

Diese Methode funktioniert auch für Docker Build. Weitere Informationen zum Ändern der Docker-Konfigurationsdatei finden Sie im Dokument Konfigurieren von Docker.