Partilhar via


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.

  1. 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
    
    
  2. 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.

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

  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