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

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

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

Note

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

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

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

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

ヒント

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

myapplication という新しい 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 の各コンテナーはコンテナー グループにデプロイされます。コンテナー グループには複数のコンテナーを格納できます。

Azure Container Instances のコンテナー グループ

複数コンテナー グループのデプロイ

Azure Container Instances のコンテナーの手動での停止または開始