This is the Trace Id: 072cb7a8f8320de488a77210f3c51a9f
メイン コンテンツへスキップ
Azure

コンテナーとは?

コンテナーとは、ソフトウェアを標準化されたパッケージにまとめた形式の一種です。クラウドやその他の環境への展開をすばやく確実に行うことができるため、迅速かつ効率的なイノベーションの支えとなります。

コンテナーの定義

コンテナ (ソフトウェア コンテナー) とは、アプリケーション コードとそれを実行するために必要なオペレーティング システム ライブラリや依存関係をバンドルした、スタンドアロンのソフトウェア パッケージです。あらゆるコンピューティング環境 (開発者のノート PC、テスト用サーバー、運用環境のクラウド サービスなど) の上で一貫した形で動作します。軽量で移植性に優れているため、ハイブリッドやマルチクラウドのプラットフォームを含め、ほぼどのようなインフラストラクチャ上でも効率的に展開、スケーリング、管理できます。

重要なポイント

  • コンテナーには、1 つのアプリケーションが任意のコンピューティング環境の上で安定して動作するために必要なものがすべてをまとめられています。
  • クラウド コンピューティングにおいて、コンテナーは、モダンなアプリケーション (AI や機械学習ワークロードを含む) をさまざまな環境に配布して管理する目的で使われます。
  • コンテナーは仮想マシンよりも軽量で移植性が高いため、スケーリングが容易です。
  • コンテナーは、モダンなアプリ開発のプラクティス (マイクロサービス アーキテクチャ、DevOps ワークフローの活用など) と補完し合う関係にあります。 
  • さまざまな業界の組織で、コンテナーは安全かつスケーラブルなソリューションの作成と維持に使われています。
  • コンテナー管理は、コンテナー向けに最適化されたツールやサービス (Kubernetes オーケストレーション プラットフォームなど) を利用するとシンプル化できます。

クラウド コンピューティングにおけるコンテナーとは?

コンテナーはアプリケーション開発の根本的課題の 1 つに対する解決策です。それは、アプリのコードや依存関係をどのように管理し、さまざまな IT 環境の中でアプリの一貫した動作を実現しながら、同じシステム上で動作する他のアプリのパフォーマンスへの影響を防ぐかということです。伝統的な方法では、ソフトウェアを異なる環境で動作させるには、開発者が異なるバージョンのパッケージを作成する必要がありました。

コンテナーは、アプリケーションのパッケージ化と展開に適した軽量かつ不変のインフラストラクチャを提供するという形でこの課題を解決します。開発者は、アプリ (またはサービス) とそのためのライブラリ、構成ファイル、依存関係をまとめ、単一のコンテナー イメージとしてパッケージ化します。コンテナー化したアプリはまとまった 1 つのユニットとしてテストでき、コンテナー イメージ インスタンスとして、無変更またはわずかな変更で異なる環境に展開できます。このため、今やコンテナーはエンタープライズ IT 戦略を支える基礎の 1 つになり、Web サービスから AI 搭載ワークロードまであらゆるものの実行に使われています。

クラウド コンテナーは、クラウド インスタンス上で動作するコンテナーであり、クラウド コンピューティングに欠かせない非常に重要な存在となっています。このしくみにより、開発者と IT プロフェッショナルは、モダンなクラウドネイティブ アプリケーションを異なる種類の環境に一貫した方法で配布し、管理することができます。対象となる環境には、ハイブリッド クラウド インフラストラクチャ (パブリック クラウドプライベート クラウド、オンプレミス リソースを組み合わせたもの) や、マルチクラウド インフラストラクチャ (異なる複数のベンダーのクラウド サービスを使ったもの) が含まれます。

すばやく再構成できるコンテナーの性質を利用すると、開発者は、ワークロードの需要変動に応じてクラウド インスタンスの起動や終了を効率よく柔軟に行うことができます。

コンテナーと仮想マシンの違いは何ですか?

コンテナーと仮想マシン (VM) はそれぞれ仮想化の一種、つまり、ワークロードとコンピューティング リソースを切り離すしくみですが、その実現方法が異なります。

大まかに言えば、VM は基盤となるリソースを仮想化し、ハードウェア上で複数のオペレーティング システム (OS) インスタンスを実行できるようにします。VM には多数のメリットがあり、特に、1 つのサーバー (オンプレミス サーバーかクラウド サーバーかを問わず) 上で複数の異なるオペレーティング システムを実行できることは大きな特長です。また、物理的リソースの利用効率とコスト効果を高めることや、サーバー プロビジョニングの迅速化も可能になります。しかし、個々の VM 内に OS イメージ、ライブラリ、アプリケーション、その他のコンポーネントが含まれるため、サイズが大きくなり、環境間の移動が困難かつ高コストになる可能性があります。

一方、コンテナーは基盤になる OS を仮想化し、コンテナー化アプリに対して、そのアプリ専用の OS 環境 (CPU、メモリ、ファイル ストレージ、ネットワーク接続など) のように見える環境を提供します。実際の基盤 OS やインフラストラクチャに含まれる差異は抽象化されるため、基本イメージに一貫性がある限り、どこにでもコンテナーを展開して実行できます。

コンテナーは仮想マシンよりも移植性とリソース効率に優れていますが、定義された際の対象オペレーティング システムに制約されます。ただし、コンテナーはホスト OS を共有するため、別個に OS を起動する必要やライブラリを読み込む必要はありません。したがって、はるかに効率的かつ軽量である反面、分離性は VM ほど高くありません。また、コンテナー化アプリケーションについてはパッチ適用や更新プログラム適用などの保守作業も少なくて済みます。

コンテナーと VM は組み合わせ可能です。たとえば、コンテナーを直接にインフラストラクチャ上で運用するのではなく VM 内で運用し、VM の分離性とセキュリティを生かしながら効率を高めることができます。

コンテナーを使うことのメリットは何ですか?

コンテナーを使うことの主なメリットは以下のとおりです。

  • アプリ管理のシンプル化: ソフトウェアのパッケージ化方法や異なる環境での実行方法がコンテナーによって標準化されるため、アプリケーションとインフラストラクチャの管理が容易です。オーケストレーション ツールを組み合わせると、コンテナーの自動更新、ロールバック、スケーリング、監視が可能になり、運用の効率とレジリエンスをさらに高めることができます。
  • 俊敏性の改善: IT チームは、コンテナー化アプリを使ってビジネス ニーズの変化にすばやく対応し、新しいサービスや機能の市場投入を迅速化できます。また、コンテナーはモダンな DevOps プロセスやマイクロサービス アーキテクチャをサポートできます。
  • 環境間の移植性: コンテナーには、アプリケーションの動作に必要なすべてのコンポーネントが、標準化された形式でパッケージ化して格納されます。展開先の状況と場所 (オンプレミス、クラウド、エッジ デバイスなどを含む) を問わず、コンテナーは、常に一貫した不変の環境内で動作します。 
  • 迅速なスケーリング: VM に含まれているような別個の OS インスタンスやその他のオーバーヘッド要件がないため、コンテナーでは、はるかに多くのインスタンスを 1 つのインフラストラクチャ上でサポートできます。コンテナーの軽量性によって起動と終了をすばやく行えるため、迅速なスケールアップとスケールダウンが可能です。
  • セキュリティ強化: コンテナーはコンピューティング リソースを OS レベルで仮想化するため、サイバー攻撃にさらされる攻撃面が小さく限定され、コンポーネントが侵害された場合に他のコンポーネントが影響を受けるリスクも低減されます。この内蔵された分離能力を、コンテナー セキュリティのベスト プラクティスやツールと組み合わせると、サイバー脅威を早期に検出でき、さまざまな環境における展開のセキュリティとコンプライアンスを維持しやすくなります。

コンテナーとモダンなアプリ開発

コンテナーのサイズの小ささ、ほぼどこでも実行できる性質は、モダンなアプリ開発との相性が良く、以下のような形で利用されています。

  • マイクロサービス アーキテクチャ: コンテナーはマイクロサービス アーキテクチャの構成要素です。このアーキテクチャにおいては、API を介して特定の機能を実行する多数の小さなサービスが、ゆるやかに結びつく形で大規模なアプリケーションを構成します。サービスはそれぞれ別個のコンテナー内で動作し、独立的かつ効率的に更新、スケーリング、展開することができます。
  • DevOps ワークフロー: コンテナーは、継続的インテグレーションと継続的デリバリー (CI/CD) のパイプラインを構成する重要な要素でもあります。信頼性の高い一貫した開発環境、テスト環境、運用環境を使って開発ができるため、コンテナーはワークフローの効率化、ソフトウェア開発ライフサイクルの迅速化、人的ミスの削減に役立ちます。
  • ハイブリッド クラウドおよびマルチクラウド戦略: コンテナーは容易に別のプラットフォームへ移せるため、組織がハイブリッド クラウドおよびマルチクラウド アーキテクチャを柔軟に組み合わせることができます。このため、ニーズに応じて、異なるクラウド プロバイダーから提供されるインフラストラクチャやその他のリソースをプロビジョニングできます。
  • アプリケーションの移行とモダン化: アプリケーションのコンテナー化を利用すると、従来型のモノリシック アプリケーション (すべてのアプリケーション コンポーネントを 1 つにバンドルした形式) に最小限の修正を加えてモダンな環境で動作させ、クラウド移行をシンプルに実現できます。
  • AI および機械学習のワークロード: コンテナーは、AI 搭載アプリ (たとえば、ビジネス プロセスの自動化や予測分析の実行に必要なアプリ) のパッケージ化と実行に最適です。自己完結型の機械学習モデルも、環境を問わず迅速に再現してスケーリングすることができるため、モデルのトレーニングから推論までの一貫性を確保できます。
  • 生成 AI モデル: 言語モデル、拡散モデル、その他の生成 AI モデルを扱う開発者は、コンテナーを使って複雑な依存関係を効率的にバンドルできます。さらに、コンテナー化アプリ用のオーケストレーション ツールを利用すると、迅速に、安全に、大規模にモデルを展開できます。

コンテナーの業界別ユース ケース

以下では、あらゆる形態と規模の組織において実際にコンテナーを活用して効率向上、イノベーション、スケーラビリティが実現されている例を紹介します。

自動車
自動車メーカーでは、コネクテッドカー サービスのリアルタイム ナビゲーション更新やインフォテイメント システムなどにコンテナーが採用され、数百万台もの車両に安定したパフォーマンスを発揮させています。

銀行および金融
金融機関では、銀行中核システムのモダン化、詐欺行為検出モデルの実行、モバイルファースト アプリケーションの構築を行いながら、業界規制コンプライアンスを厳格に維持する用途にコンテナーが使われています。

ゲーム
ゲーム企業では、マッチメイキング サービス、ランキング ボード、分析のグローバル展開にコンテナーが使われています。コンテナーの機能により、更新プログラムの展開は、ライブ ゲームプレイを中断させることなくほぼリアルタイムで実施可能です。

医療
病院や研究センターでは、医療分析アプリの展開、医療保険の携行性と責任に関する法律 (HIPAA) の要件コンプライアンス確保や、機密性の患者データを安全な隔離された環境で管理する用途にコンテナーが使われています。

小売
小売企業では、パーソナライズされたショッピング体験の提供、在庫のリアルタイム追跡管理、マイクロサービス主導のフロントエンドによってショッピング イベントのピーク時対応スケーリングを行う用途にコンテナーが使われています。

製造
製造企業では、モノのインターネット (IoT) デバイスやリアルタイム予測分析と生産プロセスの連携、シミュレーション環境の構築、IT 管理とコストの効率化にコンテナーが使われています。

電気通信
電気通信事業者では、モバイル ネットワークのエッジにコンテナーが配置され、顧客の身近にある IoT、電話機、その他デバイスをカバーする 5G 基地局の通信をサポートしています。

コンテナー向けに最適化されたツールとサービス

以下では、組織における効果的なコンテナー化アプリ管理、セキュリティ保護、スケーリングに役立つ人気のツールやサービスをいくつかご紹介します。

コンテナー オーケストレーション プラットフォーム
エンタープライズ向けでは、複数のマシン クラスターに分散配置された数百、数千のコンテナーで 1 つのアプリケーションが構成されることがあります。Kubernetes は、そうした用途にまつわる課題の解決に役立つ、コンテナー化アプリケーションの展開、スケーリング、管理の自動化を実現します。

コンテナー向けセキュリティ ツール
コンテナー向けに特化したセキュリティ ツールには、ランタイムの挙動監視、脆弱性のスキャン、ポリシーの適用、ワークロードの分離機能が備わっています。コンテナー ファイアウォールとイメージ署名は、保護の強化策としてよく使われています。

サーバーレス コンテナー
サーバーレス コンピューティング テクノロジをコンテナー化アプリと組み合わせると、開発者は、サーバー管理やインフラストラクチャ管理の手間なしでコンテナーを実行させることができます。これは、イベント駆動型アプリケーションでトラフィックの急増に対応する必要がある場合に最適です。

サービスとしてのコンテナー (CaaS)
CaaS プラットフォームは、マネージド コンテナー環境を提供します。開発者は、オーケストレーション ソフトウェアのインストールやインフラストラクチャの監督を行う手間なしで、コンテナーを展開して管理することができます。

コンテナーの未来

ソフトウェア コンテナーは、アプリケーションとそれに必要なランタイム環境を組み合わせて単体のユニットにまとめることで、ハイブリッドやマルチクラウド プラットフォームを含むあらゆる種類のインフラストラクチャ間で横断的な移動、スケーリング、管理を可能にするものです。汎用性と効率性に優れたコンテナーは、今後も進化を続け、モダン コンピューティングの基盤としての役割を担っていくでしょう。
よくあるご質問

よくあるご質問

  • クラウド コンテナーは、ハイブリッド クラウドやマルチクラウドの広い環境全体で AI 搭載アプリやその他のモダン アプリケーションを実行するために必要なものをすべて含んだ、軽量で移植可能なソフトウェア パッケージです。
  • クラウド コンピューティングにおけるコンテナーは、革新的なアプリケーションを大規模かつ効率的に構築、テスト、展開しつつコンピューティング リソースを最適化する手段を組織に提供し、より効果的な競争を可能にするものです。
  • コンテナーと仮想マシンは、どちらも、ワークロードをコンピューティング リソースから分離するテクノロジです。ただし、コンテナーはホスト OS を共有するしくみであり、軽量かつ移植性に優れています。一方、仮想マシンは内部で完全な OS を実行するため、環境間の移動の困難さとコストが大きくなります。
  • いいえ。Kubernetes はコンテナーではありません。コンテナー化アプリケーションの展開、スケーリング、管理を自動化する、オープンソースのオーケストレーション プラットフォームです。