コンテナーを新しいバージョンの Windows オペレーティング システムにアップグレードする

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

このトピックでは、Windows コンテナーを新しい Windows または Windows Server オペレーティング システム バージョンにアップグレードする方法について説明します。 コンテナーをアップグレードするには、次の 2 つの手順があります。

  1. コンテナー ホストを新しいオペレーティング システム バージョンにアップグレードします。
  2. 新しいオペレーティング システム バージョンを使用して新しいコンテナー インスタンスを作成します。

注意

現在の Windows ベース OS コンテナー イメージを "更新" (またはパッチ適用) する必要があるだけの場合は、コンテナーの更新に関する記事を参照して、コンテナーの最新のパッチ イメージをプルします。

コンテナー ホストをアップグレードする

コンテナー ホストを新しい Windows または Windows Server バージョンにアップグレードするには、インプレース アップグレードまたはクリーン インストールを実行します。 コンテナー ホストと Windows コンテナーは 1 つのカーネルを共有するので、コンテナーの基本イメージ OS のバージョンがホストのものと一致することを確認する必要があります。 ただし、コンテナー ホストの新しいバージョンは、Hyper-V 分離を使用する古い基本イメージと共に引き続き使用できます。 Windows Server 2022 では、プロセス分離 (プレビュー中) を使用してこのシナリオを実装できます。

新しい OS バージョンを使用して新しいコンテナー インスタンスを作成する

新しいコンテナー インスタンスを作成するには、以下を行う必要があります。

  • コンテナーの基本イメージをプルする
  • Dockerfile を編集して新しい基本イメージをポイントする
  • 新しいアプリ イメージをビルドして実行する
  • イメージをタグ付けしてレジストリにプッシュする

コンテナーの基本イメージをプルする

コンテナー ホスト上で新しい Windows OS バージョンをプルした後、次の手順に従って基本イメージをアップグレードします。

  1. アップグレードするコンテナーの基本イメージを選択します。

  2. 管理者として PowerShell セッションを開き、選択した OS バージョンに応じて、docker pull コマンドを実行してイメージをプルします。

    PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
    

    この例では、Server Core バージョン 20H2 の基本イメージをプルします。

  3. イメージのダウンロードが完了したら docker images コマンドを実行してプルされたイメージの一覧を返すことで、新しいイメージがプルされたことを確認できます。

    docker images
    

Dockerfile を編集して新しい基本イメージをポイントする

次に、プルした新しい基本イメージを使用して、新しいコンテナー インスタンスを作成して開始します。 このプロセスを自動化するには、Dockerfile を編集して新しいイメージにリダイレクトします。

注意

現在実行中のコンテナーのイメージをアップグレードする場合は、docker stop を使用してコンテナーを停止し、docker rm を実行してコンテナーを削除する必要があります。

テキスト エディターで Dockerfile を開き、更新を行います。 次の例では、Dockerfile は IIS アプリケーションを使用して Server Core 20H2 に更新されます。

FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN PowerShell Install-WindowsFeature NET-Framework-45-ASPNET

FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["ServiceMonitor.exe", "w3svc"]

新しいアプリ イメージをビルドして実行する

Dockerfile が更新されたら、アプリ イメージをビルドして実行する必要があります。

  1. 次に示すように、docker build を使用してイメージをビルドします。

    docker build -t iss .
    
  2. 新しくビルドされたコンテナーを実行するには、docker run コマンドを実行します。

    docker run -d -p 8080:80 --name iss-app iss
    

イメージをタグ付けしてレジストリにプッシュする

他のホストが新しいイメージを再利用できるようにするには、コンテナー イメージにタグを付けて、レジストリにプッシュする必要があります。

  1. 次のように、docker tag を使用してイメージにタグを付けます。

    docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
    
  2. 次のように、docker push を使用してイメージをコンテナー レジストリにプッシュします。

    docker push <login-server> iss
    

オーケストレーターを使用してコンテナーをアップグレードする

Azure Kubernetes Service や AKS on Azure Stack HCI などのオーケストレーターを使用して Windows コンテナーを再デプロイすることもできます。 このオーケストレーターは、大規模にこの作業を行うための強力な自動化機能を提供します。 詳細については、「チュートリアル: Azure Kubernetes Service (AKS) でのアプリケーションの更新」または「チュートリアル: Azure Kubernetes Service on Azure Stack HCI でのアプリケーションの更新」を参照してください。