Udostępnij za pośrednictwem


Zwirtualizowana strefa czasowa

Dotyczy: Windows Server 2025, Windows Server 2022, Windows Server 2019,

Kontenery systemu Windows obsługują możliwość obsługi zwirtualizowanej konfiguracji strefy czasowej niezależnie od hosta. Wszystkie konfiguracje tradycyjnie stosowane dla strefy czasowej hosta zostały zwirtualizowane i są instancjonowane dla każdego kontenera. Dzięki tej funkcji kontenery systemu Windows oferują następujące zachowania:

  • Podczas uruchamiania kontenera strefa czasowa hosta jest dziedziczona i pozostaje w kontenerze. Jeśli strefa czasowa hosta zmieni się podczas działania kontenera, strefa czasowa przechowywana w kontenerze nie zmienia się. Aby odziedziczyć strefę czasową hosta, konieczne jest ponowne uruchomienie kontenera.
  • Kontener przechowuje konfigurację strefy czasowej hosta, która jest obserwowana tylko podczas uruchamiania kontenera , dopóki użytkownik jawnie nie skonfiguruje strefy czasowej z poziomu kontenera. Po ustawieniu strefy czasowej z poziomu kontenera konfiguracja jest zwirtualizowana, a kontener nie odwołuje się już do hosta.
  • Jeśli skonfigurujesz strefę czasową kontenera, a następnie zapiszesz stan kontenera, konfiguracja strefy czasowej będzie się powtarzać po ponownym uruchomieniu.

Wszystkie interfejsy API trybu jądra i trybu użytkownika związane z konfiguracją systemowej strefy czasowej są teraz obsługujące kontenery. Gdy wątek uruchomiony w kontekście kontenera wywołuje interfejs API systemu w celu wykonywania zapytań dotyczących czasu lokalnego, pobiera konfigurację strefy czasowej kontenera zamiast hosta. Dane strefy czasowej zapisane z kontenera są teraz utrwalane w magazynie specyficznym dla kontenera, a dany kontener nie dziedziczy już bieżących danych strefy czasowej hosta podczas uruchamiania. Oznacza to, że po ustawieniu strefy czasowej kontener będzie nadal używać skonfigurowanej strefy czasowej podczas ponownych uruchomień. Wszystkie kontenery utworzone na podstawie obrazu dziedziczą konfigurację strefy czasowej, pod warunkiem że była ona jawnie ustawiona w jednej z warstw.

W poniższej tabeli przedstawiono obsługiwaną wersję kompilacji dla każdego SKU.

Numer jednostki magazynowej (SKU) Obsługiwana kompilacja
Windows Server 2019 10.0.17763.1935 lub nowszy
20H2 SAC 10.0.19042.985 lub nowszy
Windows Server 2022 Wszystkie wersje
Windows Server 2025 Wszystkie wersje

Jak skonfigurować strefę czasową kontenera?

Najpierw musisz zarówno wersje hosta, jak i gościa zawierające tę funkcję, co oznacza uruchomienie poprawki obsługi 2105B lub nowszej. Uruchamianie wcześniejszych wersji po prostu przywraca kontener do odwzorowywania strefy czasowej hosta, przy czym konfiguracja nie ma wpływu na hosta ani gościa.

Notatka

Skonfigurowanie strefy czasowej wymaga uprawnień administracyjnych, w szczególności SeTimeZonePrivilege. To uprawnienie ma konto ContainerAdministrator. W związku z tym zaleca się działanie z najmniejszymi uprawnieniami potrzebnymi do danego zadania i przeznaczyć konto ContainerAdministrator na zadania administracyjne, takie jak ustawienie strefy czasowej.

Zalecanym sposobem skonfigurowania strefy czasowej kontenera jest użycie narzędzia TZUtil.exe lub polecenia cmdlet Set-TimeZone programu PowerShell. Te narzędzia są dobrze utrzymane i oferują wygodę łatwego ustawienia strefy czasowej. Każda inna metoda musi bezpośrednio korzystać z interfejsów API systemu. Wersje obrazów podstawowych, które zawierają TZUtil.exe lub PowerShell, będą działać od razu po instalacji. Obraz podstawowy Nanoserver jest wyjątkiem, ponieważ ten obraz nie obsługuje domyślnie TZUtil.exe ani programu PowerShell, dlatego wymaga niestandardowego narzędzia do interakcji z systemowymi interfejsami API. W każdym razie nowo napisane aplikacje nie powinny mieć zależności od strefy czasowej systemu operacyjnego, chyba że jest to absolutnie konieczne i zamiast tego należy uwzględnić je w danych i logice aplikacji.

Przykład użycia systemu Windows Server 2019

Korzystając z obrazu podstawowego systemu Windows Server 2019 Server Core, poniżej przedstawiono przykład ustawienia zwirtualizowanej strefy czasowej.

  1. Po uruchomieniu kontenera ustaw strefę czasową kontenera na strefę czasową hosta (w tym przykładzie jest to czas standardowy Pacyfiku), jak pokazano poniżej:

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. Ustaw strefę czasową hosta na Centralny Standardowy Czas Azji (UTC+6:00) i zauważ, że Standardowy Czas Pacyficzny nadal pojawia się w kontenerze:

    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
    

    Należy pamiętać, że podczas uruchamiania kontenera po raz pierwszy konfiguracja jest ustawiona zgodnie z tą, która była skonfigurowana podczas tworzenia obrazu podstawowego , aż do momentu, gdy samodzielnie ją skonfigurujesz. W większości przypadków dla podstawowych obrazów systemu Windows wartością domyślną będzie czas standardowy pacyficzny.

  3. Następnie ustaw strefę czasową kontenera na "Samoa Standard Time":

    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
    

    Teraz strefa czasowa kontenera została zaktualizowana do Samoa Standard Time, ale host pozostaje na czasie standardowym Azji Środkowej. Ta konfiguracja jest zachowywana podczas zapisywania stanu kontenera.

  4. Jeśli ponownie uruchomisz kontener bez wcześniejszego zapisania stanu, strefa czasowa zostanie ustawiona na strefę czasową hosta, jak pokazano poniżej:

    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