Fuso horário virtualizado
Aplica-se a: Windows Server 2025, Windows Server 2022, Windows Server 2019,
Os contêineres do Windows oferecem suporte à capacidade de manter uma configuração de fuso horário virtualizada separada do host. Todas as configurações tradicionalmente usadas para o fuso horário do host foram virtualizadas e são instanciadas para cada contêiner. Com esse recurso, os contêineres do Windows oferecem os seguintes comportamentos:
- Ao iniciar o contêiner, o fuso horário do host é herdado e permanece dentro do contêiner. Se o fuso horário do host for alterado enquanto o contêiner estiver em execução, o fuso horário armazenado dentro do contêiner não será alterado. Para reherdar o fuso horário do host, o contêiner deve ser reiniciado.
- O contêiner mantém a configuração de fuso horário do host que é observada ao iniciar o contêiner apenas até que o usuário configure explicitamente o fuso horário de dentro do contêiner. Depois de definir o fuso horário de dentro do contêiner, a configuração é virtualizada e o contêiner não se refere mais ao host.
- Se você configurar o fuso horário do contêiner e, posteriormente, salvar o estado do contêiner, a configuração de fuso horário persistirá nas reinicializações.
Todas as APIs do modo kernel e do modo de usuário relacionadas à configuração do fuso horário do sistema agora reconhecem contêineres. Quando um thread em execução no contexto de um contêiner chama uma API do sistema para consultar a hora local, ele recupera a configuração de fuso horário do contêiner em vez da do host. Os dados de fuso horário gravados de dentro de um contêiner agora persistem no armazenamento específico do contêiner e o contêiner em questão não herda mais os dados de fuso horário atual do host durante a inicialização. Isso significa que, depois de definir o fuso horário, o contêiner continua a usar o fuso horário configurado nas reinicializações. Todos os contêineres criados sobre uma imagem herdam a configuração de fuso horário, desde que ela tenha sido explicitamente definida dentro de uma das camadas.
A tabela a seguir mostra a compilação suportada para cada SKU:
SKU | Compilação suportada |
---|---|
Windows Server 2019 | 10.0.17763.1935 ou superior |
SAC 20H2 | 10.0.19042.985 ou superior |
Windows Server 2022 | Todas as versões |
Windows Server 2025 | Todas as versões |
Como faço para configurar o fuso horário do contêiner?
Primeiro, precisas de versões de host e convidado que contenham essa funcionalidade, o que significa que devem estar a operar num patch de serviço 2105B ou superior. A execução de versões anteriores simplesmente reverte o comportamento do contentor para espelhar o fuso horário do anfitrião, sendo que a configuração não tem impacto nem na máquina anfitriã nem na máquina hóspede.
Observação
A configuração do fuso horário requer privilégios administrativos, especificamente SeTimeZonePrivilege. A conta ContainerAdministrator tem esse privilégio. Portanto, a recomendação é executar com o mínimo de privilégios necessários para sua carga de trabalho e reservar a conta ContainerAdministrator para tarefas administrativas, como definir o fuso horário.
A maneira recomendada de configurar o fuso horário do contêiner é por meio do utilitário TZUtil.exe ou do cmdlet Set-TimeZone do PowerShell. Estes utilitários são bem conservados e oferecem conveniência para definir facilmente o fuso horário. Qualquer outro método precisa interagir diretamente com as APIs do sistema. As versões de imagem base com TZUtil.exe ou PowerShell incluídos funcionarão imediatamente. A imagem base Nanoserver
é uma exceção, pois essa imagem não oferece suporte a TZUtil.exe ou PowerShell por padrão, portanto, requer um utilitário personalizado para interagir com as APIs do sistema. Em qualquer caso, aplicativos recém-escritos NÃO devem depender do fuso horário do sistema operacional a menos que seja absolutamente necessário e, em vez disso, devem considerá-lo dentro dos dados e da lógica do aplicativo.
Exemplo usando o Windows Server 2019
Usando a imagem base do Windows Server 2019 Server Core, segue-se um exemplo para definir um fuso horário virtualizado.
Depois de iniciar o contêiner, defina o fuso horário para o fuso horário do host (neste exemplo, é a hora padrão do Pacífico), conforme mostrado abaixo:
PS C:\> tzutil /g Pacific Standard Time
Defina o fuso horário do host para a Hora Padrão da Ásia Central (UTC+6:00) e observe que a Hora Padrão do Pacífico ainda aparece no contêiner:
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
Observe que, ao iniciar o contêiner pela primeira vez, a configuração é definida para o que foi configurado ao criar a imagem base até que você mesmo a configure. Na maioria dos casos, para imagens base do Windows, o padrão será a Hora Padrão do Pacífico.
Em seguida, defina o fuso horário do contêiner como "Hora padrão 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
Agora, o fuso horário do contêiner foi atualizado para a hora padrão de Samoa, mas o host permanece no horário padrão da Ásia Central. Essa configuração persiste ao salvar o estado do contêiner.
Se você reiniciar o contêiner sem salvar seu estado anteriormente, o fuso horário será definido como o fuso horário do host, conforme mostrado abaixo:
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