Fuso orario virtualizzato

Si applica a: Windows Server 2022

I contenitori di Windows supportano la possibilità di gestire una configurazione del fuso orario virtualizzata separata dall'host. Tutte le configurazioni usate tradizionalmente per il fuso orario host sono state virtualizzate e vengono istanze per ogni contenitore. Con questa funzionalità, i contenitori di Windows offrono i comportamenti seguenti:

  • Quando si avvia il contenitore, il fuso orario dell'host viene ereditato e rimane all'interno del contenitore. Se il fuso orario dell'host cambia durante l'esecuzione del contenitore, il fuso orario archiviato all'interno del contenitore non cambia. Per ereditare nuovamente il fuso orario dell'host, è necessario riavviare il contenitore.
  • Il contenitore mantiene la configurazione del fuso orario dell'host osservata all'avvio del contenitore solo fino a quando l'utente non configura in modo esplicito il fuso orario dall'interno del contenitore. Dopo aver impostato il fuso orario dall'interno del contenitore, la configurazione viene virtualizzata e il contenitore non fa più riferimento all'host.
  • Se si configura il fuso orario del contenitore e successivamente si salva lo stato del contenitore, la configurazione del fuso orario persiste tra i riavvii.

Tutte le API della modalità kernel e della modalità utente correlate alla configurazione del fuso orario di sistema sono ora in grado di tenere conto dei contenitori. Quando un thread in esecuzione nel contesto di un contenitore chiama un'API di sistema per eseguire query sull'ora locale, recupera la configurazione del fuso orario del contenitore anziché quella dell'host. I dati del fuso orario scritti dall'interno di un contenitore ora vengono mantenuti nella risorsa di archiviazione specifica del contenitore e il contenitore in questione non eredita più i dati del fuso orario corrente dell'host durante l'avvio. Ciò significa che dopo aver impostato il fuso orario, il contenitore continua a usare il fuso orario configurato tra i riavvii. Tutti i contenitori basati su un'immagine ereditano la configurazione del fuso orario purché sia stata impostata in modo esplicito all'interno di uno dei livelli.

La tabella seguente illustra la build supportata per ogni SKU:

SKU Build supportata
Windows Server 2019 10.0.17763.1935 o versione successiva
20H2 SAC 10.0.19042.985 o versione successiva
Windows Server 2022 Tutte le versioni

Ricerca per categorie configurare il fuso orario del contenitore?

Prima di tutto, sono necessarie versioni host e guest contenenti questa funzionalità, ovvero in esecuzione in una patch di manutenzione 2105B o successiva. L'esecuzione di versioni precedenti consente semplicemente di ripristinare il comportamento del contenitore per il mirroring del fuso orario dell'host con la configurazione senza alcun impatto sull'host o sul guest.

Nota

La configurazione del fuso orario richiede privilegi amministrativi, in particolare SeTimeZonePrivilege. L'account ContainerAdministrator ha questo privilegio. Pertanto, è consigliabile eseguire con i privilegi minimi necessari per il carico di lavoro e riservare l'account ContainerAdministrator per le attività amministrative, ad esempio l'impostazione del fuso orario.

Il modo consigliato per configurare il fuso orario del contenitore consiste nell'utilità TZUtil.exe o nel cmdlet Set-TimeZone di PowerShell. Queste utilità sono ben gestite e offrono praticità per impostare facilmente il fuso orario. Qualsiasi altro metodo deve interagire direttamente con le API di sistema. Le versioni delle immagini di base con TZUtil.exe o PowerShell incluse funzioneranno immediatamente. L'immagine Nanoserver di base è un'eccezione perché questa immagine non supporta TZUtil.exe o PowerShell per impostazione predefinita, quindi richiede un'utilità personalizzata per interagire con le API di sistema. In ogni caso, le applicazioni appena scritte non devono dipendere dal fuso orario del sistema operativo , a meno che non sia assolutamente necessario e debbano invece tener conto dei dati e della logica dell'applicazione.

Esempio di utilizzo di Windows Server 2019

Usando l'immagine di base windows Server Core più recente di Windows Server 2019, di seguito è riportato un esempio per impostare un fuso orario virtualizzato.

  1. Dopo aver avviato il contenitore, impostare il fuso orario sul fuso orario dell'host (in questo esempio è l'ora solare del Pacifico), come illustrato di seguito:

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. Impostare il fuso orario dell'host su Ora solare dell'Asia centrale (UTC+6:00) e notare che l'ora solare del Pacifico viene ancora visualizzata nel contenitore:

    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
    

    Si noti che quando si avvia il contenitore per la prima volta, la configurazione viene impostata su qualsiasi elemento configurato durante la creazione dell'immagine di base fino a quando non viene configurato manualmente. Nella maggior parte dei casi per le immagini di base di Windows, il valore predefinito sarà Pacific Standard Time.

  3. Impostare quindi il fuso orario del contenitore su "Ora solare Samoa":

    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
    

    Ora il fuso orario del contenitore è stato aggiornato all'ora solare di Samoa, ma l'host rimane sull'ora solare dell'Asia centrale. Questa configurazione viene mantenuta durante il salvataggio dello stato del contenitore.

  4. Se si riavvia il contenitore senza salvarlo in precedenza, il fuso orario viene impostato sul fuso orario dell'host, come illustrato di seguito:

    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