仮想化されたタイム ゾーン
適用対象: Windows Server 2025、Windows Server 2022、Windows Server 2019、
Windows コンテナーでは、ホストとは別に仮想化されたタイム ゾーン構成を維持する機能がサポートされています。 ホスト タイム ゾーンに従来使用されていたすべての構成は仮想化され、各コンテナーに対してインスタンス化されています。 この機能を使用すると、Windows コンテナーは次の動作を提供します。
- コンテナーを開始すると、ホストのタイム ゾーンが継承され、コンテナー内に留まります。 コンテナーの実行中にホストのタイム ゾーンが変更された場合、コンテナー内に格納されているタイム ゾーンは変更されません。 ホストのタイム ゾーンを再継承するには、コンテナーを再起動する必要があります。
- ユーザーがコンテナー内からタイム ゾーンを明示的に構成するまでは、コンテナーの起動時に確認された、ホストのタイム ゾーンの構成がコンテナーで保持されます。 コンテナー内からタイム ゾーンを設定すると、構成が仮想化され、コンテナーはホストを参照しなくなります。
- コンテナーのタイム ゾーンを構成した後、コンテナーの状態を保存すると、タイム ゾーンの構成は再起動後も保持されます。
システム タイム ゾーンの構成に関連するすべてのカーネル モード API とユーザー モード API がコンテナー対応になりました。 コンテナーのコンテキストで実行されているスレッドがシステム API を呼び出してローカル時刻を照会すると、ホストの代わりにコンテナーのタイム ゾーン構成が取得されます。 コンテナー内から書き込まれたタイム ゾーン データがコンテナー固有のストレージに保持されるようになり、問題のコンテナーは起動時にホストの現在のタイム ゾーン データを継承しなくなりました。 つまり、タイム ゾーンを設定すると、コンテナーは再起動後も構成されたタイム ゾーンを引き続き使用します。 イメージの上に構築されたコンテナーは、いずれかのレイヤー内で明示的に設定されている限り、タイム ゾーン構成を継承します。
次の表は、各 SKU でサポートされているビルドを示しています。
SKU | サポートされているビルド |
---|---|
Windows Server 2019 | 10.0.17763.1935 以降 |
20H2 SAC | 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