Виртуализированный часовой пояс
Область применения: 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 ниже приведен пример установки виртуализированного часового пояса.
После запуска контейнера установите часовой пояс, совпадающий с часовым поясом хоста (в этом примере это тихоокеанское стандартное время), как показано ниже:
PS C:\> tzutil /g Pacific Standard Time
Задайте часовой пояс узла в стандартное время Центральной Азии (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 по умолчанию используется тихоокеанское стандартное время.
Затем задайте часовой пояс контейнера значение "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
Теперь в контейнере установлен часовой пояс стандартного времени Самоа, но узел остается на стандартном времени Центральной Азии. Эта конфигурация сохраняется при сохранении состояния контейнера.
Если вы перезапустите контейнер, не сохраняя его состояние, часовой пояс устанавливается к часовому поясу узла, как показано ниже:
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