コンテナ化アプリケーションとは

コンテナ化アプリケーションは、コンテナと呼ばれる分離されたコードのパッケージ内で実行されるアプリケーションです。コンテナには、ライブラリ、バイナリ、構成ファイル、フレームワークなど、アプリケーションがホスト オペレーティング システム上で実行する必要があるすべての依存関係が、1 つの軽量な実行可能ファイルにまとめられています。

アプリケーションをコンテナ化するプロセスでは、ハードウェアの依存関係や他のソフトウェアからさまざまな機能を分離することで、アプリケーション開発をより迅速かつ効率的に、安全に行えるようにします。コンテナはどのホスト オペレーティング システムでも実行でき、他のソフトウェアやハードウェア オブジェクトから分離されているため、一度構築すればどこでも実行できるアプリケーションを構築するための汎用性の高いツールになります。

Google 検索から YouTube や Gmail まで、Google ではあらゆるものがコンテナで実行されています。Google が開発したオープンソース プラットフォームである Kubernetes と Knative は、コンテナとアプリケーションの管理に広く使用されているツールの一つです。  

コンテナ化アプリケーションのメリット

分離

各コンテナ化アプリケーションは、他のアプリやシステム コンポーネントから離れた隔離された環境に存在するため、アプリケーション内の障害が他のアプリケーションやローカル システムに影響を与えず、バグ インシデントの範囲を制限できる。

ポータビリティ

コンテナ化アプリケーションはオペレーティング システムから独立して動作するため、物理サーバー、仮想マシン、開発者の個人のマシン、クラウドなど、ほぼすべての環境に移植できます。

軽量

仮想マシンとは異なり、コンテナにはオペレーティング システムのバージョンが含まれないため、他の仮想化手法よりもはるかに軽量で効率的です。

効率性

コンテナ化アプリケーションはマシンのコンピューティング カーネルとリソースを共有でき、コンテナ内のアプリケーション レイヤは複数のコンテナ間で共有できます。このように、コンテナ化アプリケーションは必要なリソースが少なくて済むため、複数のコンテナを同じマシンまたは仮想環境で実行できます。

スケーラビリティ

コンテナ インスタンスをすばやく追加して、増加するアプリケーションの負荷に対応できます。

アプリケーションのコンテナ化技術の仕組み

コンテナ化アプリケーションは、ホスト オペレーティング システム上でアプリを実行するために必要なすべてのアプリケーション依存関係を含む、ソフトウェアの実行可能パッケージ(コンテナ)を実行することで機能します。コンテナ化アプリケーションには複数のオブジェクトがあります。これには、コンテナ イメージを構成するすべてのアプリ コンポーネント(フレームワーク、ライブラリなど)が含まれており、コンテナ エンジンによって実行されます。コンテナ イメージは、コンテナ システムのブループリントまたはアーキテクチャです。アプリケーションを実行すると、イメージのコンテンツがコンテナ インスタンスにコピーされ、アプリケーション内の任意の数のコンテナで使用できます。コンテナ イメージは、コンテナの共有性と互換性に役立つ Open Container Initiative(OCI)という業界標準に基づいて作成されます。

Container Engine はコンテナのランタイム環境であり、コンテナ化されたアプリケーションが実行されるプラットフォームです。コンテナ エンジンは、クライアント ツールを使用してコンテナをビルド、管理、起動するためのコマンドを受け入れます。最も一般的なコンテナ エンジンは、Docker や CRI-O などのツールです。

オーケストレーション ツールは、コンテナ化アプリケーションの管理のために、特に多数のコンテナがある環境で使用されます。Kubernetes などのオーケストレーション ツールは、コンテナのデプロイ、管理、スケーリングを行います。

コンテナと仮想マシンの比較

コンテナと仮想マシンは機能は似ていますが、コンテナは使用するリソースが少なく、柔軟性に優れている傾向があります。

仮想マシンを使用すると、複数のアプリケーションやオペレーティング システムが 1 台の物理コンピュータまたはサーバーのリソースを共有し、同時に実行できます(Windows と Linux が同じコンピュータを共有する場合など)。仮想マシンは、ファイル、依存関係、オペレーティング システムの独自のコピーを保持します。

コンテナには、仮想マシンとは異なり、オペレーティング システムのコピーは保持されません。このため、コンテナと仮想マシンの主な違いは、コンテナ化によってコンピューティング リソースがより効率的に使用されることです。コンテナ ランタイムはコンピュータまたはサーバーの既存のオペレーティング システムにインストールされるため、すべてのコンテナで同じオペレーティング システムを共有できます。

アプリコンテナの種類

最も基本的なレベルでは、コンテナはシステム コンテナアプリケーション コンテナの 2 種類に分類されます。

アプリケーション コンテナ

アプリケーション コンテナは、通常は単一のプロセスを実行するステートレス ソリューションです。ここでいうコンテナ化アプリケーションは、各コンテナがプロセスを処理するアプリケーション コンテナを実行し、Kubernetes などのツールによって複数のコンテナをオーケストレートします。

市場にはアプリケーション コンテナが豊富にあります。Docker が最も人気がありますが、他にもいくつかあります。コンテナのオープンソース開発は OCI によって管理されます。

システム コンテナ

システム コンテナ(オペレーティング システム コンテナとも呼ばれます)は古いもので、仮想マシンのように機能しますが、同じコンピューティング オーバーヘッドではありません。スタンドアロン システムとして動作し、コンテナ イメージを含まず、特殊なソフトウェアを必要としません。システム コンテナは通常、モノリシックなレガシー アプリケーションで使用されています。

コンテナ化アプリケーションの一般的なエンジンとツールタイプは次のとおりです。

Docker

コンテナ化で最も人気のあるオープンソース プラットフォームです。Docker を使用すると、Linux ベースのコンテナの作成とオペレーションが可能になります。

LXC

LinuxContainers.org のオープンソース プロジェクトである LXC では、単一の Linux カーネルをオペレーティング システムとして使用して、アプリで複数の Linux システムを同時に実行できます。

rkt

rkt はRocket とも呼ばれ、コンテナをきめ細かく制御できる、または Docker コンテナ システム内の特定のコンポーネントとして使用できるアプリケーション ベースのコンテナ エンジンです。

CRI-O

コンテナ管理プラットフォーム Kubernetes 用の Container Runtime Interface(CRI)。OCI 互換のランタイムを有効にするために使用されます。多くの場合、Kubernetes の使用時に Docker の代替として使用されます。

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題を詳細に検討するには、Google Cloud のセールス スペシャリストまでご相談ください。

コンテナ化を使って次の一歩を踏み出しましょう

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
コンソール
  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud