Virtualisierte Zeitzone
Gilt für: Windows Server 2022
Windows-Container unterstützen die Möglichkeit, eine vom Host getrennte virtualisierte Zeitzonenkonfiguration aufrecht zu erhalten. Alle Konfigurationen, die üblicherweise für die Hostzeitzone verwendet werden, wurden virtualisiert und werden für jeden Container instanziiert. Mit diesem Feature bieten Windows-Container das folgende Verhalten:
- Beim Starten des Containers wird die Zeitzone des Hosts geerbt und bleibt innerhalb des Containers erhalten. Wenn sich die Zeitzone des Hosts ändert, während der Container ausgeführt wird, ändert sich die im Container gespeicherte Zeitzone nicht. Damit der Container die Zeitzone des Hosts erneut erben kann, muss er neu gestartet werden.
- Der Container behält die Zeitzonenkonfiguration des Hosts, die beim Starten des Containers beobachtet wird, nur so lange bei, bis der Benutzer die Zeitzone innerhalb des Containers explizit konfiguriert. Nachdem Sie die Zeitzone innerhalb des Containers festgelegt haben, wird die Konfiguration virtualisiert, und der Container bezieht sich nicht mehr auf den Host.
- Wenn Sie die Zeitzone des Containers konfigurieren und anschließend den Zustand des Containers speichern, wird die Zeitzonenkonfiguration bei Neustarts beibehalten.
Alle Kernelmodus- und Benutzermodus-APIs, die mit der Konfiguration der Systemzeitzone im Zusammenhang stehen, sind jetzt containerbezogen. Wenn ein Thread, der im Kontext eines Containers ausgeführt wird, eine System-API aufruft, um die lokale Zeit abzufragen, ruft er die Zeitzonenkonfiguration des Containers anstelle der des Hosts ab. Zeitzonendaten, die aus einem Container geschrieben werden, bleiben jetzt im containerspezifischen Speicher erhalten, und der betreffende Container erbt während des Starts nicht mehr die aktuellen Zeitzonendaten des Hosts. Dies bedeutet, dass der Container nach dem einmaligen Festlegen der Zeitzone damit fortfährt, bei Neustarts die konfigurierte Zeitzone zu verwenden. Alle Container, die auf einem Image basieren, erben die Zeitzonenkonfiguration, solange sie in einer der Ebenen explizit festgelegt wurde.
Die folgende Tabelle enthält den unterstützten Build für jede SKU:
SKU | Unterstützter Build |
---|---|
Windows Server 2019 | 10.0.17763.1935 oder höher |
20H2 SAC | 10.0.19042.985 oder höher |
Windows Server 2022 | Alle Versionen |
Gewusst wie: Konfigurieren der Zeitzone von Containern
Zunächst benötigen Sie sowohl Host- als auch Gastversionen, die dieses Feature enthalten. Dies bedeutet, dass sie auf einem 2105B-Wartungspatch oder höher ausgeführt werden. Beim Ausführen früherer Versionen wird das Verhalten des Containers einfach auf die Spiegelung der Zeitzone des Hosts zurückgesetzt, und die Konfiguration hat keine Auswirkungen auf den Host oder Gast.
Hinweis
Zum Konfigurieren der Zeitzone sind Administratorrechte erforderlich, insbesondere SeTimeZonePrivilege. Das Containeradministratorkonto weist diese Berechtigung auf. Daher wird empfohlen, für die Ausführung die geringstmöglichen Berechtigungen für Ihre Workload zu verwenden und das Containeradministratorkonto administrativen Aufgaben vorzubehalten, wie dem Festlegen der Zeitzone.
Die empfohlene Vorgehensweise zum Konfigurieren der Containerzeitzone nutzt das Hilfsprogramm TZUtil.exe oder das Set-TimeZone-Cmdlet von PowerShell. Diese Hilfsprogramme sind gut gepflegt und erlauben komfortabel das einfache Festlegen der Zeitzone. Jede andere Methode muss direkt mit den System-APIs interagieren. Basisimageversionen, die TZUtil.exe oder PowerShell enthalten, sind ohne Konfiguration sofort einsatzbereit. Das Nanoserver
-Basisimage stellt eine Ausnahme dar, da dieses Image TZUtil.exe oder PowerShell standardmäßig nicht unterstützt. Daher ist für die Interaktion mit den System-APIs ein benutzerdefiniertes Hilfsprogramm erforderlich. In jedem Fall sollten neu geschriebene Anwendungen KEINE Abhängigkeit von der Zeitzone des Betriebssystems beinhalten, sofern dies nicht unbedingt erforderlich ist, und dies sollte in den Anwendungsdaten und der Logik berücksichtigt werden.
Beispiel für die Verwendung von Windows Server 2019
Bei Verwendung des aktuellen Windows Server 2019 Server Core-Basisimages bietet sich das folgende Beispiel für das Festlegen einer virtualisierten Zeitzone an.
Legen Sie nach dem Starten des Containers die Zeitzone auf die Zeitzone des Hosts fest (in diesem Beispiel Pacific Standard Time), wie unten dargestellt:
PS C:\> tzutil /g Pacific Standard Time
Legen Sie die Zeitzone des Hosts auf Zentralasiatische Normalzeit (UTC+6:00) fest, und beachten Sie, dass die Pacific Normalzeit weiterhin im Container angezeigt wird:
PS C:\> Get-TimeZone
Id : Pacific Standard Time DisplayName : (UTC-08:00) Pacific Time (US & Canada) StandardName : Pacific Standard Time DaylightName : Pacific Daylight Time BaseUtcOffset : -08:00:00 SupportsDaylightSavingTime : True
Beachten Sie, dass die Konfiguration beim erstmaligen Starten des Containers auf das festgelegt wird, was beim Erstellen des Basisimages konfiguriert wurde, bis Sie selbst die Konfiguration vornehmen. In den meisten Fällen ist die Standardeinstellung für Windows-Basisimages Pacific Standard Time.
Legen Sie als Nächstes die Zeitzone des Containers auf „Samoa Standard Time“ fest:
PS C:\> tzutil /s "Samoa Standard Time" PS C:\> tzutil /g Samoa Standard Time PS C:\> Get-TimeZone
Id : Samoa Standard Time DisplayName : (UTC+13:00) Samoa StandardName : Samoa Standard Time DaylightName : Samoa Daylight Time BaseUtcOffset : 13:00:00 SupportsDaylightSavingTime : True
Jetzt wurde die Zeitzone des Containers auf Samoa Standard Time aktualisiert, aber der Host verbleibt unter „Central Asia Standard Time“. Diese Konfiguration wird beim Speichern des Containerzustands beibehalten.
Wenn Sie den Container neu starten, ohne zuvor seinen Zustand zu speichern, wird die Zeitzone wie unten dargestellt auf die Zeitzone des Hosts festgelegt:
PS C:\>tzutil /g Central Asia Standard Time PS C:\> Get-TimeZone
Id : Central Asia Standard Time DisplayName : (UTC+06:00) Astana StandardName : Central Asia Standard Time DaylightName : Central Asia Daylight Time BaseUtcOffset : 06:00:00 SupportsDaylightSavingTime : False