ホーム topics containers コンテナとは何ですか?
IBMのコンテナ・ソリューションはこちら クラウド関連の最新情報を購読する
コンピューターのモニター、サーバー、雲、ドットの絵文字のコラージュの図
コンテナとは何ですか?

コンテナは、アプリケーションコードとそのライブラリや依存関係とともにパッケージ化されたソフトウェアの実行可能な単位であり、デスクトップ、従来のIT、クラウドなど、どこでもコードを実行できるように一般的な方法でパッケージ化されています。

コンテナは、オペレーティングシステム(OS)仮想化の形式を利用します。この仮想化では、OSカーネルの機能(Linux名前空間とcgroup、Windowsサイロとジョブオブジェクトなど)を使用してプロセスを分離し、それらのプロセスがアクセスできるCPU、メモリ、およびディスクの量を制御できます。

コンテナは、Virtual Machinesとは異なり、すべてのインスタンスにゲストOSを含める必要がなく、ホストOSの機能とリソースを使用するだけで済むため、小型で高速かつポータブルです。

コンテナは、FreeBSD JailsやAIX Workload Partitionsなどのバージョンで数十年前に初めて登場しましたが、現代の開発者のほとんどが、2013年がDockerの導入による現代のコンテナ時代の始まりだったと記憶しています。

戦略的なアプリのモダナイゼーションがデジタル・トランスフォーメーションを推進

戦略的アプリケーションのモダナイゼーションは、年間収益を増加させ、メンテナンス・コストとランニング・コストを削減できる変革成功への鍵の一つです。

関連コンテンツ

登録してDaaSガイドを受け取る

コンテナとVirtual Machinesの比較

コンテナをよりよく理解する方法の1つは、従来のVirtual Machine(VM)との違いを理解することです。従来の仮想化では、オンプレミスでもクラウドでもハイパーバイザーを使用して物理ハードウェアを仮想化します。各VMには、ゲストOS と、OSの実行に必要なハードウェアの仮想コピー、およびアプリケーション、そして関連するライブラリと依存関係が含まれます。

基礎となるハードウェアを仮想化する代わりに、コンテナはオペレーティングシステム(通常は Linux)を仮想化するため、個々のコンテナにはアプリケーションとそのライブラリおよび依存関係のみが含まれます。 ゲストOSがないため、コンテナは軽量で、高速でポータブルです。

この比較について詳しく知りたい場合は、「コンテナとVM:その違いとは」をご覧ください。

コンテナのメリット

コンテナの主なメリットは、特にVMと比較して、軽量でポータブルな抽象化レベルを提供できることです。主なメリットは次のとおりです。

軽量:コンテナはマシンOSカーネルを共有するため、アプリケーションごとに完全なOSインスタンスを用意する必要がなく、コンテナファイルを小さくしてリソースを節約できます。特にVMと比較してサイズが小さいため、コンテナはすぐに起動でき、水平方向に拡張するクラウドネイティブ・アプリケーションをより適切にサポートできます。

ポータブルでプラットフォームに依存しない:コンテナには依存関係がすべて含まれているため、ソフトウェアを一度作成すれば、ラップトップ、クラウド、オンプレミスのコンピューティング環境で再構成しなくても実行できます。

最新の開発とアーキテクチャーをサポート:コンテナはプラットフォーム間での移植性/一貫性とサイズの小ささを兼ね備えているため、通常のコードを少しずつ使用して構築されるDevOpsサーバーレスマイクロサービスなどの最新の開発およびアプリケーションパターンに最適です。

使用率の向上:これまでのVMと同様、コンテナを使用すると、開発者とオペレーターは物理マシンのCPUとメモリの使用率を向上させることができます。コンテナがさらに優れている点は、マイクロサービス・アーキテクチャーも可能にするため、アプリケーション・コンポーネントをより細かくデプロイして拡張できることです。これは、単一のコンポーネントの負荷が増大したためにモノリシック・アプリケーション全体をスケールアップしなければならない場合に比べて、魅力的な代替オプションです。

最近のIBMの調査では、開発者とIT幹部がコンテナを使用したことによるその他の多くのメリットを報告しました。

レポート全文をダウンロードする:エンタープライズにおけるコンテナ

コンテナのユースケース

コンテナは、特にクラウド環境においてますます重要になってきています。多くの組織がアプリケーションやワークロードの汎用コンピューティング プラットフォームとしてVMに代わるコンテナを検討しています。 しかし、その広い範囲の中でも、コンテナが特に関連する重要なユースケースがあります。

  • マイクロサービス:コンテナは小型かつ軽量であるため、アプリケーションが多数の疎結合で独立してデプロイ可能な小さなサービスで構築されるマイクロサービスアーキテクチャーに適しています。
  • DevOps:アーキテクチャーとしてのマイクロサービスとプラットフォームとしてのコンテナの組み合わせは、ソフトウェアを構築、出荷、実行する方法としてDevOpsを採用する多くのチームにとって共通の基盤となっています。
  • ハイブリッドとマルチクラウド:コンテナは、ノートPC、オンプレミス、クラウド環境など、あらゆる場所で一貫して実行できるため、組織が複数のパブリッククラウドと自社のデータセンターを組み合わせて運用しているハイブリッドクラウドマルチクラウドのシナリオに最適な基盤アーキテクチャーです。
  • アプリケーションのモダナイズと移行アプリケーションのモダナイゼーション に対する最も一般的なアプローチの1つは、クラウド移行に備えてアプリケーションをコンテナ化することです。
コンテナ化

コンテナを活用するには、ソフトウェアを異なる方法で設計およびパッケージ化する必要があります。このプロセスは一般にコンテナ化と呼ばれます。

アプリケーションをコンテナ化する場合、プロセスには、アプリケーションを関連する環境変数、構成ファイル、ライブラリ、およびソフトウェアの依存関係とともにパッケージ化することが含まれます。その結果、コンテナプラットフォーム上で実行できるコンテナイメージが作成されます。

Kubernetesを使用したコンテナ・オーケストレーション

企業がコンテナを採用し始めると(多くの場合、最新のクラウドネイティブアーキテクチャの一部として採用)、個々のコンテナのシンプルさと、分散システム全体で数百(または数千)のコンテナを管理する複雑さが衝突し始めました。

この課題に対処するために、コンテナ・オーケストレーションは、次のような大量のコンテナをライフサイクル全体にわたって管理する方法として登場しました。

  • プロビジョン
  • 冗長性
  • ヘルス・モニタリング
  • リソース割り当て
  • スケーリングとロードバランシング
  • 物理ホスト間の移動

多くのコンテナ・オーケストレーション・プラットフォーム(Apache Mesos、Nomad、Docker Swarmなど)が作成されましたが、2014年にGoogleによって導入されたオープンソースプロジェクトであるKubernetesは、瞬く間に最も人気のあるコンテナ・オーケストレーション・プラットフォームとなり、現在では業界の大多数が標準化の基盤とするプラットフォームになっています。

Kubernetesを使用すると、開発者とオペレーターはYAMLファイルを通じてコンテナ環境全体の望ましい状態を示すことができます。その後、Kubernetesはその状態を確立し、維持するために必要なすべての処理作業を実行します。これには、特定のアプリケーションまたはプログラムの指定された数のインスタンスのデプロイ、障害が発生した場合のアプリケーションの再起動、ロード・バランシング、Auto-Scaling、ゼロダウンタイムの実現などのアクティビティーが含まれます。

Kubernetesは現在、Linux Foundationの後援の下で運営されている、ベンダーに依存しない業界グループのCloud Native Computing Foundation(CNCF)によって運営されています。

Istio、Knative、拡大するコンテナエコシステム

コンテナは、アプリケーションをパッケージ化して実行するための一般的な方法として勢いを増し続けており、本番環境のユースケースに対応し、拡張するために設計されたツールとプロジェクトのエコシステムは成長し続けています。Kubernetes以外にも、コンテナ・エコシステムで最も人気のある2プロジェクトが、IstioとKnativeです。

istio

開発者がコンテナを使用してマイクロサービスアーキテクチャーを構築および実行すると、管理上の懸念は個々のコンテナのライフサイクルの考慮を超えて、多数の小さなサービス(多くの場合「サービスメッシュ」と呼ばれる)が相互に接続して関係する方法にまで及びます。Istioは、開発者が検出、トラフィック、監視、セキュリティーなどに関連する課題を簡単に管理できるようにするために作成されました。

Istioの詳細はこちら

knative

サーバーレスアーキテクチャーも、特にクラウドネイティブ・コミュニティー内で人気が高まり続けています。たとえば、Knativeは、コンテナ化されたサービスをサーバーレス関数としてデプロイできるという点で大きな価値があります。

サーバーレス関数は(サーバーのように)常に実行していて、必要なときに応答する代わりに、呼び出されない限りまったく実行しない「ゼロスケール」を利用できます。このモデルは、何万ものコンテナに適用すると膨大な量の計算能力を節約できます。

関連ソリューション
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloudは、パブリック環境およびハイブリッド環境でOpenShiftを活用し、速度、市場対応性、拡張性、信頼性を実現します。

IBM Cloud 上の Red Hat OpenShift を探索する
IBM Cloud Pak for Applications

CP4Appsは、デプロイ、新しいクラウドネイティブ・アプリケーションの構築、既存アプリケーションのリファクタリングやリプラットフォームなどをカバーします。

IBM Cloud Pak for Applicationsはこちら
IBM Cloud Satellite

IBM Cloud Satellite を使用すると、オンプレミス、エッジ、パブリック・クラウド環境など、どこでも一貫したクラウド・サービスを開始できます。

IBMクラウド・サテライトを探索する
IBM Cloud Code Engine

コンテナイメージ、バッチジョブ、またはソースコードをサーバーレスワークロードとして実行します。サイジング、デプロイ、ネットワーク、スケーリングは必要ありません。

IBM クラウド・コード・エンジンについて詳しく見る
IBM Cloud Container Registry

IBM Cloud Container Registryは、イメージを管理し、安全性の問題を監視できるプライベート・レジストリーを提供します。

IBM Cloud Container Registryの詳細はこちら
IBM Turbonomic で Kubernetes を最適化する

Turbonomicソフトウェアは、リソースの適切な割り振りと、それを実行するタイミングを自動的に決定することで、SLOを満たすために必要なものをKubernetes環境と基幹業務を担うアプリケーションが確実に取得できるようにします。

IBM Turbonomicの詳細はこちら
参考情報 企業内のコンテナ

IBM の新しい調査では、コンテナーと Kubernetes の導入の勢いが急速に高まっていることが文書化されています。

クラウドと従来のITの最高の機能を組み合わせる

コンテナ オーケストレーションは、どこからでもワークロードを構築および管理できるオープン ハイブリッド クラウド戦略の重要なコンポーネントです。

Dockerとは?

Dockerは、コンテナ化されたアプリケーションを構築、デプロイ、管理するためのオープンソース プラットフォームです。

次のステップ

Red Hat OpenShift on IBM Cloud は、エンタープライズ ワークロードを Kubernetes クラスターにコンテナ化してデプロイするための高速かつ安全な方法を開発者に提供します。セキュリティ管理、コンプライアンス管理、展開管理、継続的なライフサイクル管理を含む、退屈で反復的なタスクの負荷を軽減します。

IBM Cloud 上の Red Hat OpenShift を探索する 無料で始める