Partager via


Fuseau horaire virtualisé

S’applique à : Windows Server 2025, Windows Server 2022, Windows Server 2019,

Les conteneurs Windows prennent en charge la possibilité de gérer une configuration de fuseau horaire virtualisé distincte de l’hôte. Toutes les configurations utilisées traditionnellement pour le fuseau horaire de l’hôte ont été virtualisées et sont instancenées pour chaque conteneur. Avec cette fonctionnalité, les conteneurs Windows offrent les comportements suivants :

  • Lors du démarrage du conteneur, le fuseau horaire de l’hôte est hérité et reste dans le conteneur. Si le fuseau horaire de l'hôte change pendant que le conteneur est en cours d'exécution, alors le fuseau horaire stocké dans le conteneur ne change pas. Pour hériter à nouveau du fuseau horaire de l’hôte, le conteneur doit être redémarré.
  • Le conteneur conserve la configuration du fuseau horaire de l’hôte observée lors du démarrage du conteneur uniquement jusqu’à ce que l’utilisateur configure explicitement le fuseau horaire à partir du conteneur. Une fois que vous avez défini le fuseau horaire à partir du conteneur, la configuration est virtualisée et le conteneur ne fait plus référence à l’hôte.
  • Si vous configurez le fuseau horaire du conteneur et enregistrez par la suite l’état du conteneur, la configuration du fuseau horaire persiste entre les redémarrages.

Toutes les API en mode noyau et en mode utilisateur liées à la configuration du fuseau horaire système sont désormais prenant en charge le conteneur. Lorsqu’un thread s’exécute dans le contexte d’un conteneur appelle une API système pour interroger l’heure locale, il récupère la configuration du fuseau horaire du conteneur au lieu de celle de l’hôte. Les données de fuseau horaire écrites à partir d’un conteneur sont désormais conservées dans un stockage spécifique au conteneur et le conteneur en question n’hérite plus des données de fuseau horaire actuelles de l’hôte pendant le démarrage. Cela signifie qu’une fois que vous avez défini le fuseau horaire, le conteneur continue d’utiliser le fuseau horaire configuré entre les redémarrages. Tous les conteneurs basés sur une image héritent de la configuration du fuseau horaire tant qu’il a été défini explicitement dans l’une des couches.

Le tableau suivant montre les builds prises en charge pour chaque SKU :

SKU Version prise en charge
Windows Server 2019 10.0.17763.1935 ou version ultérieure
SAC 20H2 10.0.19042.985 ou version ultérieure
Windows Server 2022 Toutes les versions
Windows Server 2025 Toutes les versions

Comment configurer le fuseau horaire du conteneur ?

Tout d’abord, vous devez disposer des versions d’hôte et d’invité contenant cette fonctionnalité, ce qui signifie qu’elles s’exécutent sur un correctif de maintenance 2105B ou une version ultérieure. L’exécution de versions antérieures rétablit simplement le comportement du conteneur pour synchroniser le fuseau horaire de l’hôte, la configuration de ces versions n'ayant aucun impact sur l’hôte ou la machine invitée.

Note

La configuration du fuseau horaire nécessite des privilèges d’administration, en particulier SeTimeZonePrivilege. Le compte ContainerAdministrator dispose de ce privilège. Par conséquent, la recommandation consiste à s’exécuter avec les privilèges minimum nécessaires pour votre charge de travail et à réserver le compte ContainerAdministrator pour les tâches administratives, telles que la définition du fuseau horaire.

La méthode recommandée pour configurer le fuseau horaire du conteneur est via l’utilitaire de TZUtil.exe ou l’applet de commande Set-TimeZone PowerShell. Ces utilitaires sont bien entretenus et offrent une commodité pour définir facilement le fuseau horaire. Toute autre méthode doit interagir directement avec les API système. Les versions d’images de base avec TZUtil.exe ou PowerShell incluses fonctionnent directement dès l’installation. L’image de base Nanoserver est une exception, car cette image ne prend pas en charge TZUtil.exe ou PowerShell par défaut. Il nécessite donc un utilitaire personnalisé pour interagir avec les API système. Dans tous les cas, applications nouvellement écrites ne doivent pas dépendre du fuseau horaire du système d’exploitation, sauf absolument nécessaire et doivent plutôt tenir compte de celui-ci dans les données et la logique de l’application.

Exemple utilisant Windows Server 2019

À l’aide de l’image de base windows Server 2019 Server Core, voici un exemple de définition d’un fuseau horaire virtualisé.

  1. Après avoir démarré le conteneur, définissez le fuseau horaire sur le fuseau horaire de l’hôte (dans cet exemple, il s’agit de Pacific Standard Time) comme indiqué ci-dessous :

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. Définissez le fuseau horaire de l’hôte sur l’heure standard de l’Asie centrale (UTC+6:00) et notez que l’heure standard du Pacifique apparaît toujours dans le conteneur :

    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
    

    Notez que lors du démarrage du conteneur pour la première fois, la configuration est définie sur ce qui a été configuré lors de la création de l’image de base jusqu’à ce que vous le configuriez vous-même. Dans la plupart des cas pour les images de base Windows, la valeur par défaut est Pacific Standard Time.

  3. Ensuite, définissez le fuseau horaire du conteneur sur « Heure standard de 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
    

    Maintenant, le fuseau horaire du conteneur a été mis à jour à l’heure standard de Samoa, mais l’hôte reste sur l’heure standard de l’Asie centrale. Cette configuration persiste lors de l’enregistrement de l’état du conteneur.

  4. Si vous redémarrez le conteneur sans enregistrer son état précédemment, le fuseau horaire est défini sur le fuseau horaire de l’hôte, comme indiqué ci-dessous :

    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