コンテナ・プラットフォーム

menu icon

コンテナ・プラットフォーム

このガイドでは、クラウド・コンピューティングにおけるコンテナの重要性を確認し、中核的なメリットを強調し、Docker、Kubernetes、Istio、Knative全体にまたがる関連テクノロジーの新たなエコシステムをご紹介します。

コンテナとは

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

これを実現するために、コンテナはオペレーティング・システム(OS)仮想化(Linuxカーネル、つまりネームスペースとcgroupsプリミティブの場合)の機能を利用してプロセスを分離し、それらのプロセスがアクセスできるCPU 、メモリー 、ディスクの量を管理します。

コンテナは、仮想マシンとは異なり、個々のインスタンスにゲストOSを含める必要がなく、代わりにホストOSの機能とリソースを利用できるため、小さく、高速で、移植可能です。

コンテナは、FreeBSD JailsやAIX Workload Partitionsなどのバージョンで何十年も前に初登場したものですが、大部分の現代の開発者は、2013年をDockerが導入された現代のコンテナ時代の始まりとして認識しています。

コンテナと仮想マシン(VM)

コンテナをよりよく理解する1つの方法は、コンテナが従来の仮想マシン(VM)とどのように異なるかを理解することです。 従来の仮想化(それがオンプレミスであれクラウド内であれ)では、物理ハードウェアを仮想化するのにハイパーバイザーが活用されています。 このため各VMには、ゲストOS、OSの実行に必要なハードウェアの仮想コピー、アプリケーションとそれに関連するライブラリーや依存関係が含まれます。

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

この比較の詳細については、「コンテナとVM:違いは何ですか?」をご確認ください。

コンテナのメリット

特にVMと比較した場合のコンテナの主な利点は、コンテナを軽量でポータブルにする抽象化のレベルを提供することです。

  • 軽量:コンテナはマシンのOSカーネルを共有するため、アプリケーションごとの完全なOSインスタンスが不要になり、コンテナ・ファイルが小さくてリソースを節約できます。 サイズが、特に仮想マシンと比較して小さいため、素早くスピンアップでき、水平方向に拡張できるクラウドネイティブのアプリケーションをより適切にサポートできます。
  • ポータブルでプラットフォームに依存しない:コンテナはそのすべての依存関係を保持します。つまり、ソフトウェアを一度作成したら、ラップトップ、クラウド、およびオンプレミスのコンピューティング環境全体で再構成せずに実行できます。
  • 最新の開発とアーキテクチャーをサポート:プラットフォーム間でのデプロイメントの移植性/一貫性とサイズの小ささの組み合わせにより、コンテナは、DevOpsサーバーレスマイクロサービス(小さな増分で定期的なコード展開で構築されるもの)などの最新の開発とアプリケーション・パターンに最適です。
  • 使用効率の向上: 以前のVMと同様、コンテナによって、開発者とオペレーターは物理マシンのCPUとメモリの使用効率を向上させることができます。 コンテナはさらに進んで、マイクロサービス・アーキテクチャーも可能にするため、アプリケーション・コンポーネントはよりきめ細かく展開し、拡張縮小することができます。これは、単一のコンポーネントが負荷に苦しんでいるためにモノリシック・アプリケーション全体を拡大する必要があるのに対する代替手段として魅力的です。

最近のIBMの調査(PDF、1.4MB)で、開発者とIT業界のエグゼクティブは、コンテナの使用について他にも多くのメリットを報告しました。 以下のインタラクティブ・ツールを使用してご覧ください。

レポートエンタープライズ内のコンテナ (PDF、1.4MB)全文をダウンロード

コンテナのユース・ケース

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

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

コンテナ化

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

アプリケーションをコンテナ化する場合、そのプロセスには、関連する環境変数、構成ファイル、ライブラリー、ソフトウェアの依存関係でアプリケーションをパッケージ化することが含まれます。 その結果、コンテナ・プラットフォームで実行できるコンテナ・イメージが作成されます。 詳細については、次の「Containerization Explained(コンテナ化の説明)」(08:09)のビデオをご覧ください。

Kubernetesによるコンテナ・オーケストレーション

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

この課題に対処するために、コンテナ・オーケストレーションが、ライフサイクル全体にわたって多数のコンテナを管理する方法として台頭しました。次のような要素が含まれます。

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

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

Kubernetesを使用すると、開発者とオペレーターはYAMLファイルを介してコンテナ環境全体の望ましい状態を宣言できます。その後、Kubernetesは、所定のアプリケーションやワークロードの指定数のインスタンスをデプロイする、アプリケーションが失敗した場合は再起動する、ロード・バランシングする、自動スケーリングする、ダウンタイム・ゼロでデプロイする等のアクティビティーを使って、あらゆるハードワークを行い、宣言の状態を確立し、保持します。

Kubernetesの詳細については、Sai Vennamが以下のビデオ(10:59)でKubernetesの概要を説明しています。

 

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

Istio、Knative、拡張コンテナのエコシステム

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

Istio

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

 

Knative

サーバーレス・アーキテクチャーも、特にクラウドネイティブ・コミュニティー内で人気がさらに高まっています。 Knativeの大きな価値は、コンテナ化されたサービスをサーバーレス機能としてデプロイできることです。

サーバーレス関数は、サーバーのように常に稼働して必要なときに応答するのではなく、「ゼロにスケーリング」できます。つまり、呼び出されない限り、まったく実行されません。 このモデルを数万のコンテナに適用すると、コンピューティング能力を大幅に節約できます。

Knativeの詳細については、次のビデオ「Knativeとは」(07:58)をご覧ください。

コンテナとIBM Cloud

IBM Cloudコンテナ・サービスは、オープンソース・テクノロジーに基づいて構築されており、クラウド・ジャーニーを促進し、加速します。 継続的インテグレーションと継続的デリバリー(CI / CD)ツールを使用して、コンテナ化されたアプリケーションを構築します。 Red Hat OpenShiftまたはKubernetesのマネージド・サービスを使用してコンテナをオーケストレーションします。 また、IBM Cloud Paksの中のコンテナ化されたIBMミドルウェアとオープンソース・コンポーネントを使用して、既存のアプリケーションをモダナイズします。

IBM Cloud上のコンテナの詳細をご覧ください。

IBMidとIBM Cloudアカウントにご登録ください。