次の方法で共有


仮想化されたタイム ゾーン

適用対象: 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 基本イメージを使用して、仮想化されたタイム ゾーンを設定する例を次に示します。

  1. コンテナーを開始した後、次に示すように、タイム ゾーンをホストのタイム ゾーン (この例では太平洋標準時) に設定します。

    PS C:\> tzutil /g
    Pacific Standard Time
    
    
  2. ホスト のタイム ゾーンを中央アジア標準時 (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 基本イメージの既定値は太平洋標準時です。

  3. 次に、コンテナーのタイム ゾーンを "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
    

    コンテナーのタイム ゾーンがサモア標準時に更新されましたが、ホストは中央アジア標準時のままです。 この構成は、コンテナーの状態を保存するときに保持されます。

  4. 以前に状態を保存せずにコンテナーを再起動した場合、次に示すように、タイム ゾーンはホストのタイム ゾーンに設定されます。

    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