この記事のポイント
- サーバーレスのコンテナ実行環境として、インフラ管理の複雑さを排除し、数秒でコンテナをデプロイ可能
- 開発環境の構築、定期的なバッチ処理、シンプルなアプリケーションの実行に最適
- Azure PortalやCLIを使用して、簡単にコンテナをデプロイし、リソースやネットワークの設定をカスタマイズ可能
- コンテナーグループ機能により、複数のコンテナを同じホスト上にデプロイし、リソースを共有
- Kubernetesなどのオーケストレーターを補完し、短期的なタスクや低トラフィックのサービスに適している
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
コンテナ技術の導入を考える上で、マイクロソフトのAzure Container Instances(ACI)はコスト効率とシンプルさを重視した選択肢です。
サーバーレスのコンテナ実行環境として、インフラ管理の複雑さを排除し、数秒で簡単にコンテナをデプロイできる利点を持ちます。
本記事ではACIの基本、特徴、使い方をはじめ、オーケストレーションツールとの適切な組み合わせや料金体系について解説します。
<br<開発環境の構築、定期的なバッチ処理、シンプルなアプリケーションの実行に最適なACIの活用法を身に付け、貴社のクラウド戦略に役立てましょう。
Azure container Instancesとは
Azure Container Instances (ACI) は、Microsoft Azureが提供するサーバーレスのコンテナ実行環境です。このサービスを使うことで、複雑なインフラの管理なしに、コンテナをクラウド上で簡単に実行することができます。
Azure container Instancesイメージ
素早いデプロイと効率的なリソース管理が可能なAzure container Instancesについて今回解説していきます。
前提知識
Azure Container Instancesの説明に入る前に、前提知識として必要なコンテナ、Docker及びコンテナオーケストレーションサービスについて説明します。
コンテナ
コンテナは、アプリケーションを動かすための「軽い箱」のようなものです。この箱には、アプリケーションが動くのに必要なすべて(コード、ライブラリ、設定など)が詰め込まれていて、どこでも同じように動作することが保証されます。
コンテナイメージ(参考:Microsoft)
例えば、
開発者が自分のパソコンで作ったアプリケーションを、別のサーバーやクラウド上でも同じように動かしたい場合、
コンテナを使うと環境の違いを気にせず動かせます。
Docker
Dockerは、コンテナを作成・管理するためのツールです。Dockerを使うと、開発者はアプリケーションとその依存関係をDockerイメージとしてパッケージ化し、それをDockerコンテナとして動かすことができます。
- Dockerイメージ:コンテナを作るための設計図のようなもので、アプリケーションやその必要なものが詰め込まれています。
- Dockerコンテナ:Dockerイメージをもとに実際に動いている「箱」で、アプリケーションが実際に動作する環境そのものです。
Dockerイメージ(参考:Microsoft)
Dockerは、ローカル環境やオンプレミスでの開発やテストには非常に便利です。しかし、実際の運用環境では、いくつかの課題があります。そこでコンテナオーケストレーションサービスの利用が役立つのです。
コンテナオーケストレーションサービス
コンテナオーケストレーションサービスとは、コンテナ化されたアプリケーションを大規模に管理・運用するためのツールやプラットフォームのことです。例えばKubernetesやDocker Swarm
があげられます。
上記にも述べたようにDockerはコンテナの作成と実行は可能ですが、複雑なタスクをすべて手動で管理する必要があります。その点、コンテナオーケストレーションサービスを使うと、複数のコンテナを効果的に管理・運用することができます。
Azure Container Instancesの特徴
では以上の前提知識を基に、Azure Container Instancesの特徴について説明していきます。
ACIはコンテナオーケストレーションサービスではありませんが、Dockerをクラウド環境で簡単に実行するため非常に便利なサービスです。
シンプルなコンテナ実行に特化
ACIは、コンテナの実行を迅速かつ簡単に行えるように設計されています。特徴は、以下のとおりです。
- 数秒でのコンテナ起動
- 複雑な設定不要: ACIを使うことで、特別な設定や複雑な手順を踏むことなく、すでに作成されたDockerイメージをそのままAzureのクラウド環境でコンテナとして起動できます。
- インフラストラクチャ管理が不要: ACIはマネージドサービスとして提供されるため、サーバーの設定や管理を気にせず利用できます。
シンプルな場面に適している
ACIは、次のようなシンプルな場面に特に向いています。
- ACIは数秒でコンテナを起動できるため、開発やテスト環境を迅速に作成したり削除したりできます。
- 夜間のデータ処理や定期的なバックアップなど、定期的に実行されるジョブの処理に適しています。
- 小規模なアプリケーションやAPIを簡単にデプロイして実行するのに適しています。低トラフィック向けのアプリケーションにも最適です。
コンテナオーケストレーションや自動スケーリング機能はない
ただしACIは、コンテナオーケストレーションが持つ以下のような高度な機能はサポートしていません。
- 負荷の変動に応じてコンテナの数を自動的に増減させる機能(自動スケーリング)がありません。
- コンテナのデプロイ戦略や特定のノードへの配置制約などの複雑な設定はサポートしていません。
- 動的なサービスの検出や、複数のコンテナ間のロードバランシング機能がありません。
これらの機能が必要な場合には、Azure Kubernetes Service (AKS)のようなコンテナオーケストレーションサービスを使用することを検討する必要があります。
Azure Kubernetes Serviceイメージ
Azure Container Instancesの使い方
では、ここからAzure Container Instancesの基本的な使い方を、デプロイ方法やコンテナ設定を中心に説明します。
Azure Portalからのコンテナデプロイ
Azure Portalから簡単にコンテナをデプロイできます。
- Azureポータルにサインイン:
Azureポータルにアクセスし、Azureアカウントでサインインします。
Azureポータル画面
※前提準備として、Azureアカウントの作成を行ってください。
➡️Azure Portalとは?操作方法やメリットをわかりやすく解説!
-
「リソースの作成」 をクリックします。
リソースの作成ボタン
-
左メニューから「コンテナー」 > 「Container Instances」を選択。
Container Instances選択
-
[基本] ページで、必要事項を入力します。
基本ページ
-
入力が終了したら、「確認および作成」をクリックし、確認後「作成」をクリックします。
作成ボタン
Dockerイメージを指定してコンテナを起動
以下のコマンドをAzure CLIに入力することで、指定したDockerイメージを使ってACI上にコンテナを起動することができます。
az container create \
--name mydockercontainer \
--resource-group myResourceGroup \
--image docker.io/library/nginx:latest \
--ports 80 \
--dns-name-label aci-nginx-demo
【説明】
- コンテナの作成:
mydockercontainer
という名前で新しいコンテナグループが作成されます。 - nginxのデプロイ: Docker Hubから
nginx
イメージ(最新バージョン)を取得し、そのイメージを使ってコンテナが起動されます。 - ポートの公開: コンテナが外部からHTTPリクエストを受け取ることができるように、ポート
80
が公開されます。 - DNS名の設定:
aci-nginx-demo
というDNS名ラベルが作成され、コンテナにアクセスするためのURLが生成されます。
Azure CLIについては、この記事も参考にしてみてください。
➡️Azure CLIとは?使い方やインストール方法、活用例を徹底解説!
CPU、メモリ、ポートなどの設定
コンテナのリソース(CPU、メモリ)やネットワーク(ポート、環境変数)などの設定もカスタマイズ可能です。
az container create \
--name mycustomcontainer \
--resource-group myResourceGroup \
--image myimage:latest \
--cpu 2 \
--memory 4 \
--ports 80 443 \
--environment-variables KEY1=VALUE1 KEY2=VALUE2
【説明】
- コンテナの作成:
mycustomcontainer
という名前のコンテナグループが作成されます。 - カスタムイメージのデプロイ: 指定されたDockerイメージ
myimage:latest
がデプロイされます。 - リソースの割り当て: コンテナに2つのvCPUと4GBのメモリが割り当てられます。
- ポートの公開: 外部からアクセスできるように、ポート
80
(HTTP)と443
(HTTPS)が開放されます。 - 環境変数の設定: コンテナ内で使用する環境変数
KEY1
とKEY2
が設定され、アプリケーションの動作を制御するのに使用されます。
コンテナーグループ
ここで、ACIのコンテナーグループ機能について説明します。
コンテナーグループとは、複数のコンテナを同じホスト上にデプロイし、密接に連携して動作させるための単位です。次のような特徴があります。
コンテナーグループイメージ(参考:Microsoft)
1.コンテナーグループの管理
コンテナーグループを用いることで、関連するコンテナを一緒に管理し、単一のデプロイユニットとして取り扱うことができます。
2.リソースの共有
コンテナーグループ内のコンテナは、同じホストで動作し、ネットワーク、ストレージ、ライフサイクルを共有することとなります。
-
ネットワークの共有
コンテナーグループ内のすべてのコンテナは同じIPアドレスを共有し、異なるポートで動作します。また、グループ内のコンテナ同士はlocalhostを介して直接通信することができます。 -
ストレージの共有
Azure Fileを使用することで、複数のコンテナが同じストレージにアクセスし、データを共有することが可能です。たとえば、ログファイルや設定ファイルを共有する場合
などに便利です。Azure Fileについてはこちらもご覧ください。
【関連記事】
➡️ Azure Filesとは?その機能や料金、アクセス方法をわかりやすく解説 -
ライフサイクルの共有
コンテナーグループ内のすべてのコンテナは一斉にデプロイ、開始、停止されます。
Azure Container Instancesの料金体系
ではここで、Azure Container Instancesの料金体系についてご紹介します。
1. 基本料金構成
ACIの料金は、コンテナー グループに割り当てられた次の2つの項目で課金されます:
- vCPU(仮想CPU)の使用量:秒単位での料金
- メモリの使用量:秒単位での料金
2. その他の費用
- Windows コンテナーの追加料金:
Windows コンテナーを使用する場合、vCPUの使用時間ごとに追加料金(¥0.0017342/秒)が発生します。
詳しい情報は、こちらをご覧ください。
Azure Container Instancesとオーケストレーターの関係
最後にACIとコンテナオーケストレーターの関係性について、ご説明します。
Kubernetesなどのオーケストレーターを補完
ACIは、Kubernetesのようなコンテナオーケストレーターと競合するのではなく、活躍場面が異なります。
つまり、
- ACI
手軽に使えるため、簡単なコンテナ実行に特化しています。
- Kubernetes
複雑なマイクロサービスアーキテクチャの管理に適しています。
ACIの利用場面
以下のようなシナリオでACIを利用すると効果的です。
-
短期的なタスク:
- バッチ処理やデータ処理ジョブ
- CI/CDパイプラインの一部としての一時的なビルド・テスト環境
-
シンプルなアプリケーション
- 単一コンテナで構成されるウェブアプリケーション
- クライアント向けのデモ環境
-
低トラフィックのサービス
- 個人プロジェクトや学習目的のアプリケーション
- プロトタイプや概念実証 (PoC) の開発環境
複雑な管理が必要な場合はオーケストレーターと併用
より複雑なコンテナ管理が求められる場合は、Kubernetesなどのコンテナオーケストレーターの使用が適しています。
- 大規模なマイクロサービスアーキテクチャ
- 高可用性が要求されるミッションクリティカルなアプリケーション
- 自動スケーリングが必要な変動の大きいワークロード
そのため、ACIとコンテナオーケストレーターを適切に組み合わせることが望ましいでしょう。
例えば、こうした利用方法がおすすめです。
- リソースの需要が急増した場合、ACIを利用して一時的にコンテナ数を増やす。
- 開発中やテスト段階ではACIを使用し、本番環境ではKubernetesを利用。
まとめ
本記事では、Azure Container Instances (ACI) の概要、主要な特徴、基本的な使用方法、料金体系、そしてコンテナオーケストレーターとの関係について解説しました。
ACIは、サーバーレスでシンプルなコンテナ実行環境を提供し、開発環境やバッチ処理、シンプルなアプリケーションの展開に特に適しています。一方で、複雑なアプリケーション管理には制限があるため、必要に応じてKubernetesなどのオーケストレーターと併用するとよいでしょう。
ぜひACIを効果的に活用することで、より効率的なコンテナ戦略に役立ててみてください。
この記事が、皆様のお役に立てたら幸いです。