Azure Container Instances のコンテナーを更新する

コンテナー インスタンスの通常の操作中に、コンテナー グループ内の実行中のコンテナーを更新することが必要になる場合があります。 たとえば、イメージのバージョン、DNS 名、または環境変数などのプロパティを更新したり、アプリケーションがクラッシュしたコンテナー内のプロパティを更新したりする場合があります。

コンテナー グループ内の実行中のコンテナーを更新するには、少なくとも 1 つのプロパティが変更された既存のグループを再デプロイします。 コンテナー グループを更新すると、そのグループに含まれる実行中のコンテナーがすべてインプレースで (通常は基になる同じコンテナー ホスト上で) 再起動されます。

Note

終了した、または削除されたコンテナー グループを更新することはできません。 停止 (Succeeded または Failed のいずれかの状態) または削除されたコンテナー グループは、新規としてデプロイする必要があります。 他の制限事項を参照してください。

コンテナー グループを更新する

既存のコンテナー グループを更新するには、次のようにします。

  • create コマンドを発行 (または Azure portal を使用) し、既存のグループの名前を指定します。
  • 再デプロイするときに、更新をサポートするグループのプロパティを少なくとも 1 つ変更または追加します。 特定のプロパティでは、更新はサポートされていません
  • 以前に指定した値を使用して、他のプロパティを設定します。 プロパティの値を設定しなかった場合は、既定値に戻ります。

Note

すべてのプロパティを以前に指定した値に設定し、変更や追加を行わない場合、create コマンドに応答してコンテナーが再起動されます。

ヒント

YAML ファイルは、コンテナー グループのデプロイ構成を維持するのに役立ち、更新されたグループをデプロイするための開始点を提供します。 別の方法を使用してグループを作成した場合は、az container export を使用して、構成を YAML にエクスポートすることができます。

次に示す Azure CLI の例では、新しい DNS 名ラベルでコンテナー グループを更新します。 グループの DNS 名ラベルのプロパティが、更新可能なプロパティであるため、コンテナー グループが再デプロイされ、そのコンテナーが再起動されます。

DNS 名ラベル myapplication-staging を使用した初期のデプロイ:

# Create container group
az container create --resource-group myResourceGroup --name mycontainer \
    --image nginx:alpine --dns-name-label myapplication-staging

application という新しい DNS 名ラベルを使用してコンテナー グループを更新し、残りのプロパティは、以前使用した値を使用して設定します。

# Update DNS name label (restarts container), leave other properties unchanged
az container create --resource-group myResourceGroup --name mycontainer \
    --image nginx:alpine --dns-name-label myapplication

更新の利点

既存のコンテナー グループを更新する主な利点は、デプロイ時間が短縮されることです。 既存のコンテナー グループを再デプロイすると、そのコンテナー イメージ レイヤーは、以前のデプロイでキャッシュされたレイヤーからプルされます。 新しいデプロイでレジストリに登録されたすべてのイメージ レイヤーをプルするのではなく、変更されたレイヤー (ある場合) だけがプルされます。

Windows Server Core などの大規模なコンテナー イメージに基づくアプリケーションでは、削除と新規のデプロイではなく更新を行うことで、デプロイ速度が大幅に改善されます。

制限事項

  • コンテナー グループのすべてのプロパティで更新がサポートされているわけではありません。 コンテナー グループの一部のプロパティを変更するには、最初にグループを削除してから再デプロイする必要があります。 「コンテナーの削除が必要なプロパティ」を参照してください。
  • コンテナー グループを更新すると、そのコンテナー グループ内のすべてのコンテナーが "**再起動**" されます。 複数コンテナー グループに含まれる特定のコンテナーを更新したり、インプレースで再起動したりすることはできません。
  • 通常、コンテナー グループの IP アドレスは、更新されても保持されますが、同じままであることは保証されません。 コンテナー グループが基になる同じホストにデプロイされる限り、コンテナー グループは IP アドレスを保持します。 まれに、一部の Azure 内部イベントが原因で、別のホストに再デプロイされる場合があります。 この問題を軽減するには、コンテナー インスタンスに対して DNS 名ラベルを使用することをお勧めします。
  • 終了した、または削除されたコンテナー グループを更新することはできません。 コンテナー グループが停止 ("終了" 状態) または削除されると、グループは新規としてデプロイされます。

Note

Azure コンテナー グループが Azure Storage プロファイルにアタッチされている場合、update コマンドが機能しない場合があります。

コンテナーの削除が必要なプロパティ

コンテナー グループのすべてのプロパティを更新できるわけではありません。 たとえば、コンテナーの再起動ポリシーを変更するには、まずコンテナー グループを削除し、それから再び作成する必要があります。

次のプロパティを変更するには、再デプロイの前にコンテナー グループを削除する必要がなります。

  • OS の種類
  • CPU、メモリ、または GPU リソース
  • 再起動ポリシー
  • ネットワーク プロファイル
  • 可用性ゾーン

重要

ネットワーク プロファイルは、2021-07-01 API バージョンで廃止されました。 このバージョンまたはより新しいバージョンを使用している場合は、ネットワーク プロファイルに関連する手順とアクションは無視してください。

コンテナー グループを削除して再作成する場合、"再デプロイ" ではなく新規作成になります。 すべてのイメージ レイヤーは、以前のデプロイでキャッシュされたレイヤーではなくレジストリからプルされます。 別の基になるホストにコンテナー グループがデプロイされるため、コンテナーの IP アドレスも変わる可能性があります。

次のステップ

この記事では、コンテナー グループについて複数回説明します。 Azure Container Instances の各コンテナーはコンテナー グループにデプロイされます。コンテナー グループには複数のコンテナーを格納できます。 次の記事では、コンテナー グループの詳細について説明します。