7

我正在尝试设置基于 windows nano server 2019 Build 1809 的 WindowsContainer 的时区。

对于 linux 容器,最简单的方法之一是设置 TimeZone 环境变量,如下所示:

docker run -e TZ=Asia/Kolkata ubuntu date

对于 Windows 容器,我们有类似的东西吗?基于一般的 Windows 方法,我尝试使用类似 PowerShell 的入口点脚本中设置它(如下所示),但它也给了我一个错误。

Set-TimeZone -Name "India Standard Time"
Set-TimeZone : Access is denied
At line:1 char:1
+ Set-TimeZone -Name "India Standard Time"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : FromStdErr: (:) [Set-TimeZone], Win32Exception
+ FullyQualifiedErrorId : SetTimeZoneFailed,Microsoft.PowerShell.Commands.SetTimeZoneCommand

关于如何为基于 Windows Nanoserver 2019 Build 1809 的 Windows 容器完成此操作的任何想法?

4

5 回答 5

5

已编辑:正如Pierre-Luc Champigny指出的那样,据微软称,现在 ltsc 版本和即将推出的版本都支持此功能:https ://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/virtual-time-区

无法在 Windows Server Core 容器上正确设置全球化设置,例如时区、语言或 Windows 位置。
  • tzutil引发缺乏权限错误
  • 容器启动时忽略注册表设置

似乎您必须确保容器主机上的时区正确。 这没有多大意义,AFAIK,关于容器的整个事情就是将它作为图像运送一次并在任何地方运行它,具有环境隔离和完整性......对吗?!

无论如何,您可以在 github上看到有关该问题的更多详细信息。

另外,我已经在 Windows Server uservoice 上打开了这个建议,以改变这种行为。

此外,我已打开此功能建议以改进时区的 Azure AKS 主机配置。

于 2019-12-06T11:03:01.300 回答
3

自 2021 年 5 月起,在 2105B 服务版本(WS2019 内部版本 10.0.17763.1935)中,现在支持在容器内配置时区的功能。您可以使用 tzutil 或 Set-TimeZone 来设置容器本地的时区配置。

此处提供更多信息:https ://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/virtual-time-zone

于 2021-06-17T20:24:35.403 回答
2

您是否尝试使用该tzutil命令?

  • 方法一:

    以下示例使用该命令并设置澳大利亚时区:

    tzutil /s "AUS Eastern Standard Time"
    
  • 方法二:

    注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation包含与时区相关的所有信息。

    从具有正确时区的虚拟机或物理机,您可以导出注册表值并导入到容器中。

于 2019-10-29T18:32:36.663 回答
1

Tzutil.exe 和 PowerShell 的 Set-TimeZone 以及所有通过系统 API 更改时区的应用程序将能够在--isolation=process从 Windows Server 2022 开始的模式下在容器内设置时区。主机上的任何工作都将在容器内工作,包括 DST即使容器的时区与主机的 DST 策略不同,例如某些区域在不同的日期进入/退出 DST,或者根本没有。

最初,新的和现有的容器将像以前一样继承主机的时区(时区偏差和所有其他时区设置,例如 DST 策略),但是一旦从特定容器实例中设置,相关容器将坚持使用它它的剩余生命周期,一直在重新启动,直到再次更改。

更改特定容器实例中的时区对其他容器没有副作用,当然对主机也没有副作用,反之亦然。

于 2021-03-10T05:25:01.410 回答
0

我发现在 Windows Container 的情况下,它们能够与主机同步,并且相应的时区设置为主机操作系统的时区,所以我们真的不需要做任何特定的事情来设置 docker 容器的 TimeZone .

于 2019-07-17T18:21:26.163 回答