Поделиться через


Виртуализированный часовой пояс

Область применения: Windows Server 2025, Windows Server 2022, Windows Server 2019,

Контейнеры Windows поддерживают возможность поддерживать виртуализированную конфигурацию часового пояса отдельно от узла. Все конфигурации, традиционно используемые для часового пояса узла, были виртуализированы и созданы в виде экземпляров для каждого контейнера. С помощью этой функции контейнеры Windows предлагают следующее поведение:

  • При запуске контейнера часовой пояс узла наследуется и сохраняется в контейнере. Если часовой пояс узла изменяется во время работы контейнера, при этом часовой пояс, хранящийся в контейнере, не изменяется. Чтобы восстановить часовой пояс хост-компьютера, необходимо перезапустить контейнер.
  • Контейнер сохраняет конфигурацию часового пояса хоста, которая наблюдается при запуске контейнера только , пока пользователь явно не настроит часовой пояс внутри контейнера. Когда вы устанавливаете часовой пояс внутри контейнера, конфигурация виртуализируется, и контейнер больше не ссылается на хост.
  • Если вы настроите часовой пояс контейнера и сохраните состояние контейнера, конфигурация часового пояса сохраняется во время перезагрузки.

Все API режима ядра и пользовательского режима, связанные с конфигурацией системного часового пояса, теперь поддерживают контейнеры. Когда поток, выполняющийся в контексте контейнера, вызывает системный API для запроса локального времени, он извлекает конфигурацию часового пояса контейнера вместо хоста. Данные часового пояса, записанные из контейнера, теперь сохраняются в контейнеро-специфическом хранилище, и контейнер больше не наследует текущие данные часового пояса хоста во время запуска. Это означает, что после установки часового пояса контейнер продолжает использовать настроенный часовой пояс во время перезагрузки. Все контейнеры, созданные на основе образа, наследуют конфигурацию часового пояса, если она была явно задана в одном из слоев.

В следующей таблице показана поддерживаемая сборка для каждого номера SKU:

Код SKU Поддерживаемая сборка
Windows Server 2019 10.0.17763.1935 или выше
SAC 20H2 10.0.19042.985 или выше
Windows Server 2022 Все версии
Windows Server 2025 Все версии

Как настроить часовой пояс контейнера?

Во-первых, вам потребуется версии как узла, так и гостевые версии, содержащие эту функцию, что означает наличие обновления 2105B или более позднего. При запуске более ранних версий поведение контейнера просто возвращается к зеркальному отображению часового пояса узла, при этом конфигурация не влияет на узел или гостя.

Заметка

Для настройки часового пояса требуются права администратора, в частности SeTimeZonePrivilege. Учетная запись ContainerAdministrator имеет эту привилегию. Поэтому рекомендуется выполнять с минимальными привилегиями, необходимыми для задачи рабочей нагрузки, и оставлять учетную запись ContainerAdministrator для административных задач, таких как установка часового пояса.

Рекомендуемый способ настройки часового пояса контейнера — с помощью служебной программы TZUtil.exe или командлета PowerShell Set-TimeZone. Эти служебные программы хорошо поддерживаются и предлагают удобство для легкого задания часового пояса. Любой другой метод должен напрямую взаимодействовать с системными API. Базовые версии образа, содержащие TZUtil.exe или PowerShell, будут работать сразу после установки. Базовый образ Nanoserver является исключением, так как этот образ не поддерживает TZUtil.exe или PowerShell по умолчанию, поэтому для взаимодействия с системными API требуется настраиваемая программа. В любом случае только что написанные приложения не должны зависеть от часового пояса операционной системы, если это не обязательно, и вместо этого следует учитывать его в данных приложения и логике.

Пример использования Windows Server 2019

С помощью базового образа Windows Server 2019 Server Core ниже приведен пример установки виртуализированного часового пояса.

  1. После запуска контейнера установите часовой пояс, совпадающий с часовым поясом хоста (в этом примере это тихоокеанское стандартное время), как показано ниже:

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. Задайте часовой пояс узла в стандартное время Центральной Азии (UTC+6:00) и обратите внимание, что тихоокеанское стандартное время по-прежнему отображается в контейнере:

    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
    

    Обратите внимание, что при первом запуске контейнера конфигурация устанавливается на все, что было настроено при создании базового образа , пока не настроите его самостоятельно. В большинстве случаев для базовых образов Windows по умолчанию используется тихоокеанское стандартное время.

  3. Затем задайте часовой пояс контейнера значение "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
    

    Теперь в контейнере установлен часовой пояс стандартного времени Самоа, но узел остается на стандартном времени Центральной Азии. Эта конфигурация сохраняется при сохранении состояния контейнера.

  4. Если вы перезапустите контейнер, не сохраняя его состояние, часовой пояс устанавливается к часовому поясу узла, как показано ниже:

    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