Compartilhar via


Fuso horário virtualizado

Aplica-se a: Windows Server 2025, Windows Server 2022, Windows Server 2019,

Os contêineres do Windows dão 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 no contêiner não será alterado. Para herdar novamente 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 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 será virtualizada e o contêiner não se referirá 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á entre reinicializações.

Todas as APIs do modo kernel e do modo de usuário relacionadas à configuração do fuso horário do sistema agora têm reconhecimento de contêiner. 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 atuais do host durante a inicialização. Isso significa que, depois de definir o fuso horário, o contêiner continuará a usar o fuso horário configurado entre reinicializações. Todos os contêineres criados sobre uma imagem herdam a configuração de fuso horário desde que ela tenha sido definida explicitamente em uma das camadas.

A tabela a seguir mostra o build com suporte para cada SKU:

SKU Build com suporte
Windows Server 2019 10.0.17763.1935 ou superior
20H2 SAC 10.0.19042.985 ou superior
Windows Server 2022 Todas as versões
Windows Server 2025 Todas as versões

Como configurar o fuso horário do contêiner?

Primeiro, você precisa de versões de host e de convidado que contenham esse recurso, o que significa executar em um patch de manutenção 2105B ou superior. Executar versões anteriores simplesmente reverte o comportamento do contêiner para espelhar o fuso horário do host sem que a configuração afete o host ou o convidado.

Nota

Configurar o fuso horário requer privilégios administrativos, especificamente SeTimeZonePrivilege. A conta ContainerAdministrator tem esse privilégio. Portanto, a recomendação é executar com os privilégios mínimos 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. Esses utilitários recebem boa manutenção e facilitam a definição do 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ído funcionarão imediatamente. A imagem base Nanoserver é uma exceção, pois essa imagem não dá suporte a TZUtil.exe ou PowerShell por padrão, portanto, requer um utilitário personalizado para interagir com as APIs do sistema. De qualquer forma, aplicativos recém-gravados NÃO devem ter uma dependência no fuso horário do sistema operacional, a menos que seja absolutamente necessário e, em vez disso, devem levar em conta os dados e a lógica do aplicativo.

Exemplo usando o Windows Server 2019

Usando a imagem base do Windows Server 2019 Server Core, veja a seguir um exemplo para definir um fuso horário virtualizado.

  1. Depois de iniciar o contêiner, defina o fuso horário para o fuso horário do host (neste exemplo, é Hora Padrão do Pacífico), conforme mostrado abaixo:

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. Defina o fuso horário do host como Horário Padrão da Ásia Central (UTC+6:00) e observe que o Horário 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 como o que foi configurado ao criar a imagem base até que você a configure por conta própria. Na maioria dos casos para imagens base do Windows, o padrão será o Horário Padrão do Pacífico.

  3. 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 o Horário 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.

  4. 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