[ストーリで理解]コンテナー グループ
ストーリの登場人物についてはこちらを参照してください。
また、シリーズで体系的に学びたい方は[ストーリで学ぶAzureシリーズ]を確認してみてください!
「複数コンテナー? それならコンテナー グループを使おう!」
[おてて動かそう]のオフィス。
美咲は最近、新しい Web サービスをテストするためにコンテナーを使い始めたが、複数のコンテナーを連携させるやり方がよくわからず頭を抱えていた。そこへ陽気な田中がやってくる。
「美咲さん、なにやら悩んでるっすね?」
「はい、コンテナーって単体なら使い方はなんとなくわかったんですけど、Web サービスとロギング用のコンテナーを一緒に動かしたいんです。でも、Azure Container Instances ではどうすればいいんでしょう?」
田中はにっこり笑うと、パソコンの画面を指さしながら答えた。
「それなら ‘コンテナー グループ’ を使うといいっすね。複数のコンテナーをまとめてデプロイして、リソースとかネットワーク設定を共有できるっすよ!」
「へえ、コンテナー グループ……初めて聞きました!」美咲は目を輝かせた。
コンテナー グループとは何か
「簡単に言うと、同じホスト上でスケジュールされるコンテナーの集合っす。Kubernetes の ‘ポッド’ と似た感じかな。たとえば、Web アプリ用とログ収集用の2つのコンテナーを1つのグループとしてまとめられるんすよ。」
「コンテナー グループ内のコンテナーたちは、ライフサイクルやリソース、ネットワーク設定を共有できるってわけですね。便利!」と美咲が納得したようにうなずく。
田中はさらに補足する。「ただし、Windows コンテナーの場合はまだ複数コンテナーのグループはサポートされてないから注意っす。Linux コンテナーなら複数コンテナーを1つのグループにまとめて動かせるんすよ。」
デプロイと構成の仕組み
「複数コンテナー グループを作るには、主に2つの方法があるんすよ。Resource Manager テンプレートか YAML ファイルか、どっちかで定義するんす。」
「なるほど、Terraform とか使うイメージとはまた別なんですか?」美咲が少し首をかしげる。
「まあ、Resource Manager テンプレートや YAML ってのは Azure 側の標準的な書き方っすね。もしコンテナー以外のAzureリソースも一緒に作りたいなら Resource Manager テンプレート、シンプルにコンテナーだけなら YAML って感じっす。」
「あと、すでに作ったコンテナー グループを YAML にエクスポートして ‘コードとしての構成’ として管理するのもアリっすね。」
リソース割り当ての考え方
「でも、コンテナーが2つ以上ある場合、CPUとかメモリはどうなるんですか?」美咲はリソース管理に興味津々。
「グループ内の各コンテナーが ‘これだけ CPU が必要っす’ って要求をすると、全体の合計がグループに割り当てられるっす。たとえば、コンテナーAがCPU 1、コンテナーBがCPU 1を要求すると、コンテナー グループにはCPU 2が割り当てられるんす。」
「それなら同時に実行できるんですね!」
「そうっす。ただし、制限(リミット)を指定すると、コンテナーによっては要求以上に CPU を使える場合もあるっすね。そのぶん他のコンテナーの使えるリソースが減るから、ちゃんと計画するのが大事っすよ。」
想定される制約と注意点
「ところで、Azure Container Instances の複数コンテナー グループを使う場合に気を付けることってありますか?」美咲がたずねる。
「いくつかあるっすね。まず、Linux でしか複数コンテナーは動かせないって話はしたっすよね。あと、コンテナー グループ自体にも少しリソースが使われるから、ぎりぎりの割り当ては避けたほうが無難っす。要するに、小さめの余裕を持たせるとエラーになりにくいっすよ。」
「わかりました。リソースをぎりぎりにしないように注意します!」
他の選択肢との比較
「よく Kubernetes と比較されることが多いんすけど、ACI のコンテナー グループはスケール管理やオーケストレーション機能がシンプルっすね。大規模な運用なら Kubernetes、シンプルにさっとコンテナーを動かしたいなら ACI、みたいな使い分けが多いっす。あと、Docker Compose みたいに手元で複数コンテナー起動する手もあるけど、クラウドで手軽に動かすなら ACI は選択肢として有力っすよ。」
【まとめ】Azure Container Instances のコンテナー グループのポイント
• コンテナー グループ: 同一ホスト上でスケジュールされるコンテナーの集合。Kubernetes の「ポッド」に近いイメージ。
• 複数コンテナー: 現在は Linux コンテナーのみ対応。Windows コンテナーは1つのコンテナー インスタンスのみ。
• デプロイ方法: Resource Manager テンプレートまたは YAML ファイルが一般的。コードとして構成を管理できる。
• リソース割り当て: コンテナーごとの要求(CPU、メモリなど)を合計してグループに割り当て。制限値を調整すればリソースの柔軟な使用が可能。
• ネットワーク: グループ全体で 1 つの IP や DNS ラベルを共有し、ポート公開を行う。コンテナー同士は localhost 経由で通信できる。
• 外部ストレージ: Azure ファイル共有やシークレットなどのボリュームを、個々のコンテナーにマウント可能。
• 活用シナリオ: Web アプリ + ログ収集、フロントエンド + バックエンドなど、1つの機能を複数コンテナーで実現する場面に便利。
「これで複数コンテナーを使いたいときに、Azure Container Instances がどういう仕組みか見えてきたっすよね?」田中は得意げに笑う。
「はい、複数コンテナー グループを使えば Web アプリとログ収集コンテナーを1つにまとめられそうです。さっそくやってみます!」美咲は新しい知識に胸を弾ませながら、さっそく作業を開始するのだった。
参考
https://learn.microsoft.com/ja-jp/azure/container-instances/container-instances-container-groups
ディスカッション
コメント一覧
まだ、コメントがありません