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 の各コンテナーはコンテナー グループにデプロイされます。コンテナー グループには複数のコンテナーを格納できます。 次の記事では、コンテナー グループの詳細について説明します。