コンテナーを新しいバージョンの Windows オペレーティング システムにアップグレードする
適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016
このトピックでは、Windows コンテナーを新しい Windows または Windows Server オペレーティング システム バージョンにアップグレードする方法について説明します。 コンテナーをアップグレードするには、次の 2 つの手順があります。
- コンテナー ホストを新しいオペレーティング システム バージョンにアップグレードします。
- 新しいオペレーティング システム バージョンを使用して新しいコンテナー インスタンスを作成します。
注意
現在の Windows ベース OS コンテナー イメージを "更新" (またはパッチ適用) する必要があるだけの場合は、コンテナーの更新に関する記事を参照して、コンテナーの最新のパッチ イメージをプルします。
コンテナー ホストをアップグレードする
コンテナー ホストを新しい Windows または Windows Server バージョンにアップグレードするには、インプレース アップグレードまたはクリーン インストールを実行します。 コンテナー ホストと Windows コンテナーは 1 つのカーネルを共有するので、コンテナーの基本イメージ OS のバージョンがホストのものと一致することを確認する必要があります。 ただし、コンテナー ホストの新しいバージョンは、Hyper-V 分離を使用する古い基本イメージと共に引き続き使用できます。 Windows Server 2022 では、プロセス分離 (プレビュー中) を使用してこのシナリオを実装できます。
新しい OS バージョンを使用して新しいコンテナー インスタンスを作成する
新しいコンテナー インスタンスを作成するには、以下を行う必要があります。
- コンテナーの基本イメージをプルする
- Dockerfile を編集して新しい基本イメージをポイントする
- 新しいアプリ イメージをビルドして実行する
- イメージをタグ付けしてレジストリにプッシュする
コンテナーの基本イメージをプルする
コンテナー ホスト上で新しい Windows OS バージョンをプルした後、次の手順に従って基本イメージをアップグレードします。
アップグレードするコンテナーの基本イメージを選択します。
管理者として PowerShell セッションを開き、選択した OS バージョンに応じて、docker pull コマンドを実行してイメージをプルします。
PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
この例では、Server Core バージョン 20H2 の基本イメージをプルします。
イメージのダウンロードが完了したら 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 が更新されたら、アプリ イメージをビルドして実行する必要があります。
次に示すように、docker build を使用してイメージをビルドします。
docker build -t iss .
新しくビルドされたコンテナーを実行するには、docker run コマンドを実行します。
docker run -d -p 8080:80 --name iss-app iss
イメージをタグ付けしてレジストリにプッシュする
他のホストが新しいイメージを再利用できるようにするには、コンテナー イメージにタグを付けて、レジストリにプッシュする必要があります。
次のように、docker tag を使用してイメージにタグを付けます。
docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
次のように、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 でのアプリケーションの更新」を参照してください。