Azure Container Instances では、 コンテナー グループを使用した 1 つのホストへの複数のコンテナーのデプロイがサポートされています。 コンテナー グループは、ログ記録、監視、またはサービスに 2 つ目のアタッチされたプロセスが必要なその他の構成用にアプリケーション サイドカーを構築する場合に便利です。
このチュートリアルでは、Azure CLI を使用して YAML ファイル をデプロイして、2 コンテナーサイドカー構成を実行する手順に従います。 YAML ファイルは、インスタンス設定を指定するための簡潔な形式を提供します。 次の方法を学びます:
- YAML ファイルを構成する
- コンテナー グループをデプロイする
- コンテナーのログを表示する
注
現在、複数コンテナー グループは Linux コンテナーに制限されています。
Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
[前提条件]
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
YAML ファイルを構成する
Azure CLI で az container create コマンドを使用してマルチコンテナー グループをデプロイするには、YAML ファイルでコンテナー グループの構成を指定する必要があります。 次に、YAML ファイルをパラメーターとしてコマンドに渡します。
まず、次の YAML を deploy-aci.yaml という名前の新しいファイルにコピーします。 Azure Cloud Shell では、Visual Studio Code を使用して作業ディレクトリにファイルを作成できます。
code deploy-aci.yaml
この YAML ファイルは、"myContainerGroup" という名前のコンテナー グループを、2 つのコンテナー、パブリック IP アドレス、および 2 つの公開ポートで定義します。 コンテナーは、パブリック Microsoft イメージからデプロイされます。 グループ内の最初のコンテナーは、インターネットに接続する Web アプリケーションを実行します。 2 番目のコンテナーであるサイドカーは、コンテナー グループのローカル ネットワークを介して、最初のコンテナーで実行されている Web アプリケーションに HTTP 要求を定期的に行います。
apiVersion: 2019-12-01
___location: eastus
name: myContainerGroup
properties:
containers:
- name: aci-tutorial-app
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
- port: 8080
- name: aci-tutorial-sidecar
properties:
image: mcr.microsoft.com/azuredocs/aci-tutorial-sidecar
resources:
requests:
cpu: 1
memoryInGb: 1.5
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: 80
- protocol: tcp
port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups
プライベート コンテナー イメージ レジストリを使用するには、 imageRegistryCredentials プロパティをコンテナー グループに追加し、環境に合わせて値を変更します。
imageRegistryCredentials:
- server: imageRegistryLoginServer
username: imageRegistryUsername
password: imageRegistryPassword
コンテナー グループをデプロイする
az group create コマンドを使用してリソース グループを作成 します。
az group create --name myResourceGroup --___location eastus
az container create コマンドを使用してコンテナー グループをデプロイし、YAML ファイルを引数として渡します。
az container create --resource-group myResourceGroup --file deploy-aci.yaml
数秒以内に、Azure から最初の応答を受け取る必要があります。
デプロイの状態を表示する
デプロイの状態を表示するには、次の az container show コマンドを使用します。
az container show --resource-group myResourceGroup --name myContainerGroup --output table
実行中のアプリケーションを表示する場合は、ブラウザーでその IP アドレスに移動します。 たとえば、次の出力例では IP が 52.168.26.124 されます。
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
コンテナー ログの表示
az container logs コマンドを使用して、コンテナーのログ出力を表示します。
--container-name引数は、ログをプルするコンテナーを指定します。 この例では、 aci-tutorial-app コンテナーが指定されています。
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
アウトプット:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
サイドカー コンテナーのログを表示するには、 aci-tutorial-sidecar コンテナーを指定して同様のコマンドを実行します。
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
アウトプット:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
ご覧のように、サイドカーはグループのローカルネットワークを介してメインWebアプリケーションに対して定期的にHTTPリクエストを行い、正常に動作していることを確認します。 このサイドカーの例は、 200 OK以外の HTTP 応答コードを受信した場合にアラートをトリガーするように拡張できます。
次のステップ
このチュートリアルでは、YAML ファイルを使用して、Azure Container Instances に複数コンテナー グループをデプロイしました。 以下の方法を学習しました。
- マルチコンテナー グループの YAML ファイルを構成する
- コンテナー グループをデプロイする
- コンテナーのログを表示する
Resource Manager テンプレートを使用して、複数コンテナー グループを指定することもできます。 Resource Manager テンプレートは、コンテナー グループを使用してさらに多くの Azure サービス リソースをデプロイする必要があるシナリオに簡単に適応できます。