ボックスの中を考える:コンテナのユースケース、例、アプリケーション

青い貨物コンテナのスタックの隣にオレンジ色の貨物コンテナを吊り上げるクレーン。

コンテナ管理には長い歴史があります。何十年もの間、コンテナ化された環境を管理することは比較的簡単なことでした。コンピューター・コンテナの現代的なアイデアは、1970年代に登場し、この概念はUnixシステム上でアプリケーション・コードを定義するのに初めて使用されました。

現代のコンテナ化技術は初期の頃から着実に進歩しており、企業はコンテナを運用することで、投資に対してさらに多くのユーティリティーが得られるようになりました。小規模なスタートアップから定評のある大企業まで、コンテナ・フレームワークは、最適化されたランタイムと継続的な配信により安定したワークフローを生成する優れた能力を備えていることが証明されています。

コンテナとは

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

これは、OSカーネルの機能(例えば、Linuxの名前空間やcgroups、Windowsのサイロやジョブ・オブジェクトなど)を利用するオペレーティング・システム(OS)仮想化の形式を介して実現されます。その結果、プロセスを分離し、それらのプロセスがアクセスできるCPUやメモリー、ディスクの量を制御できます。

コンテナとDocker

コンテナ技術は、2013年にDockerの登場により根本的に変化しました。この10年間も衰えることなく継続し、着実に人気を伸ばし、ユーザーに受け入れられてきました。このタイプのコンテナ化ソフトウェアに対する市場の需要が大きいにもかかわらず、それが満たされていなかったことは、Dockerの急速な成功と今や圧倒的な市場優位性によって証明されています。

2021年のIBMの調査によると、回答者の61%が、過去2年間に構築した新しいアプリケーションの少なくとも50%でコンテナを使用したと回答しています。さらに多くの回答者(64%)が、今後2年間に構築するアプリの少なくとも50%でコンテナを使用する予定であると回答しています。

コンテナは、データの配布と保護およびアプリの実行を目的としています。したがって、コンテナ化ソフトウェアの主要ユーザーはIT業界であり、以下の業界が上位3社にランクされていることは完全に理にかなっています(ibm.com外部へのリンク)。

  1. 機械学習
  2. ソフトウェア開発
  3. 人工知能 (AI)

DockerとKubernetes

コンテナ化されたアプリケーション市場は現在、次の2つの企業によって支配されています。

Docker

最も一般的に使用されているコンテナ化プラットフォームはDockerです。Dockerコンテナはもともと2013年にDocker Engineを中心に構築され、アプリケーション・プログラミング・インターフェース(API)に従って実行されます。Dockerは、実際のところはPaaS(サービスとしてのプラットフォーム)であり、その主なメリットはその柔軟性です。Dockerは、あらゆるアプリケーションとそれに関連する依存関係を取得し、それを仮想コンテナに変換し、WindowsやmacOSまたはLinuxを実行する任意のコンピューターで実行できます。このシステムでは、コンテナ構築に使用される読み取り専用テンプレートであるDockerイメージと、Dockerイメージに付属して説明するテキスト・ファイルであるDockerfilesが使用されます。Dockerイメージやその他のコンテナ・イメージを実行するには、スペースが必要です。これは、コンテナ・ランタイム(OSと対話するソフトウェア・ソリューション)によって管理され、コンテナ・イメージの実行に必要なスペースを確保します。

Kubernetes

最も人気のあるコンテナ・オーケストレーション・プラットフォームはKubernetesです。これは2014年にGoogleによって作成され、ソフトウェア・デプロイメントを自動化し、拡張性を実現し、コンテナ管理をサポートする堅牢な方法により、今でも人気があります。さらに、Kubernetesはオープンソース・システムであり、コントリビューター(現在プロジェクトを監督している)の熱心な参加を奨励し、各ソフトウェア・プロバイダーがKubernetesに独自の工夫を凝らしています。例えば、一部のサービスでは、Kubernetesクラスターを作成するだけでなく、スケーラブルなwebアプリのデプロイやログの分析も行えます。

現在、DockerとKubernetesは、コンピューター・コンテナを扱う最も多く使用されているツールです。最近のコンテナ化予測(ibm.com外部へのリンク)によると、2024年現在でDockerはこの市場の82.8%を占め、Kubernetesは11.52%の市場シェアを獲得しています。

KubernetesとDockerの関係について詳しくは、「Kubernetes vs. Docker: Why Not Both?」をご覧ください。

コンテナのユースケース

コンテナは、特にクラウド・コンピューティング環境やエコシステムでますます重要になってきているため、コンテナ関連のユースケースには事欠きません。多くの組織では、アプリケーションやワークロード用の汎用クラウド・コンピューティング・プラットフォームの選択肢として、仮想マシン(VM)の代わりとしてコンテナを検討しています。しかし、その非常に広い範囲の中でも、クラウドネイティブ・コンテナが特に重要なユースケースがいくつかあります。

  • マイクロサービス:コンテナは小型・軽量・ポータブルであるため、コンテナ化されたアプリケーションが多数の疎結合で独立してデプロイ可能な小規模なサービスから構成されるマイクロサービス・アーキテクチャーに最適です。ハイパーバイザーは、コンピューター上で複数の仮想マシンが使用されている場合に、マイクロサービス操作を監視するために使用されます。
  • DevOps:アーキテクチャーとしてのマイクロサービスとプラットフォームとしてのコンテナの組み合わせは強力な組み合わせであり、ソフトウェア開発の処理方法としてDevOpsと開発環境を採用している多くのチームにとって共通の基盤となっています。
  • ハイブリッド・マルチクラウド: コンテナは、ノートPCやオンプレミス、クラウド環境など、どこでも一貫して実行できるため、クラウド・プロバイダーにとって理想的な基盤インフラストラクチャーおよびアーキテクチャーです。また、組織がオンプレミス・データセンターと組み合わせて複数のパブリッククラウドプライベートクラウドの混成全体で運用する任意のハイブリッドクラウドやハイブリッドクラウドマルチクラウド・シナリオにも適しています。
  • サーバーレス:サーバーレスにより、アプリの作成に取り組んでいるクラウドネイティブ開発者は、バックグラウンドで維持されるサーバーの要求と制約について考える必要がなくなります。サーバーレス方式の主な利点は、開発者が無数の詳細情報に圧倒されることなく、アプリを構築する際に必要な集中力を促進できることです。

関連ユースケースとソリューション

コンテナやコンテナ化、またはコンテナ・オーケストレーションは、次の関連ソリューションにも含まれます。

  • アプリケーションのモダナイズと移行:アプリケーションのモダナイゼーションに対する最も一般的なアプローチの1つは、最終的なクラウド・アーキテクチャーへの移行に備えて、まずアプリケーションを最適化し、コンテナ化することです。このプロセスは、アプリケーション・コード(このアプリケーションのすべての命令を含むソースコード)を作成する前に行う必要があります。
  • 分離コンテナ:分離コンテナは、マイクロサービスのユーザーをうまく支援するため、よく使われるようになりました。名前が示す通り分離コンテナは主に、ユーザーが「混雑した」コンテナのさまざまな側面を複数のパーティション分割されたコンテナ内に保持できるようにすることで、マイクロサービスをより適切に整理するために使用されます。分離コンテナは、必要な更新を迅速かつ簡単にすることで、運用の効率性も向上させると見なされています。
  • マルチテナント:マルチテナントは、共有環境内で単一のアプリケーションを操作するユーザー(テナントと呼ばれる)のシステムを中心に構成された独自のアーキテクチャー・システムです。一部のカスタマイズ・オプションはマルチテナント・システムで利用できる場合がありますが、こうしたオプションは、システムをシンプルで操作しやすくするために意図的に制限されています。コンテナは、複数のアプリケーションを1つのホストで実行できるため、マルチテナント・デプロイメントの管理に適しています。

コンテナの種類

コンテナの基本的な種類は2つあり、それぞれが異なるコンテナ・テクノロジのグループを提供します。

システム・コンテナ

「オペレーティング・システム・コンテナ」とも呼ばれるシステム・コンテナを使用すると、さまざまなプロセスを同時に実行できます。システム・コンテナは、従来型アプリを管理し、1つの論理的実行可能ファイルで表現される、単一の機能を実行するように設計されたモノリシック・アプリケーションを処理するのに最適です。これらのコンテナには、VMの実行に必要なアーキテクチャーと構成、ツールをホストする機能も備わっています。デフォルトの対策として、システム・コンテナは階層化されたファイルシステムを禁止します。

コンテナ技術:BSD Jails、Linux VServer、LXC、OpenVZ、Solaris Zones

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

アプリケーション・コンテナは、複数のプロセスを同時に実行できるシステム・コンテナほど多機能ではありません。アプリケーション・コンテナは、1つの実行可能アクションのみを実行することで1つのアプリケーションを提供することを目的としているため、その名前が付けられています。アプリケーション・コンテナーは、1つのサービスをパッケージ化して運用するために存在し、階層化されたファイル・システムをサポートしていません。

コンテナ技術を提供するDocker、Rocket

IBMとコンテナ

コンテナ化には、追加の労力と装備が必要ですが、その分見返りがあります。コンテナ・オーケストレーション・ツールは、製品がそれぞれのライフサイクルのどの段階にあるかにかかわらず、本番環境でのコンテナ体験を容易にします。

Kubernetesなどのオープンソース・テクノロジーを基盤とするIBMのコンテナ・サービスにより、クラウドへの移行を迅速・安全かつ生産的な方法で推進・加速できます。

著者

Phill Powell

Staff Writer

IBM Think