コンテナ化とは

URL をコピー

コンテナ化とは、ソフトウェアのコードをライブラリやフレームワークなどの依存関係にあるすべてのコンポーネントとともにパッケージ化し、それぞれの入れ物、「コンテナ」に隔離することです。

これは、コンテナ内のソフトウェアやアプリケーションを、環境やインフラストラクチャのオペレーティングシステムに依存することなく、どのような環境やインフラストラクチャでも一貫して移動したり実行したりできるようにするためです。コンテナは、アプリケーションをコンピューティング環境でシャボン玉のように包み込み、アプリケーションを周囲から独立させています。要するにコンテナとは、完全に機能するポータブルなコンピューティング環境と言えます。

単一のプラットフォームやオペレーティングシステム上でのコーディングでは、コードが新しい環境に対応していない場合アプリケーションの移行が難しくなりますが、コンテナはその代替として使用することが可能です。新しい環境に対応していない場合、バグやエラー、不具合の修正が必要になることもあるため、時間がかかり生産性が低下するという状況になり、多くのストレスを抱えることになります。

プラットフォームやインフラストラクチャを超えて自由に移動できるコンテナにアプリケーションをパッケージ化すると、その中には正常に動作するために必要なものがすべて含まれているため、アプリケーションはどこに移動しても問題なく使用することができます。

プロセスの分離という考え方は以前からありましたが、2013 年に Docker 社が Docker Engine を発表したことで、開発者が使いやすいツールやパッケージへの普遍的なアプローチなど、コンテナ利用のスタンダードが確立され、その後コンテナテクノロジーの導入が加速しました。今日、開発者は Docker が開拓した Open Container Initiative 規格をサポートする、さまざまなコンテナ化プラットフォームやツール (PodmanBuildahSkopeo など) の中から選択することができます。

コンテナの持つ「軽量性」つまり「可搬性」という特徴は、ホストマシンのオペレーティングシステム・カーネルを共有できることから来ています。これにより、コンテナごとに個別のオペレーティングシステムを用意する必要がなく、ベアメタルやクラウド、さらには仮想マシンなどどのようなインフラストラクチャでも同じようにアプリケーションを実行できます。これについては次のセクションで詳しく説明します。 

同様に、開発者はあるホスト環境でコンテナを操作する際に、別のホスト環境で使用するのと同じツールを使用することができるため、オペレーティングシステム間でのコンテナ化アプリケーションの開発とデプロイメントがよりシンプルになります。

Red Hat のリソース

仮想マシン (VM) とは、 (オフプレミスまたはオンプレミスの) 物理ハードウェアシステム上に作成され、固有の CPU、メモリー、ネットワーク・インタフェース、ストレージを持ち、仮想コンピュータシステムとして機能する仮想環境です。

コンテナ化と仮想化は、アプリケーションを完全に分離して、複数の環境で運用できるようにするという点で共通しています。大きな違いは、サイズと可搬性です。 

VM はサイズが大きく、通常はギガバイト単位で測定されます。独自のオペレーティングシステムを搭載しているため、大量のリソースを必要とする複数の機能を同時に実行することができます。多くのリソースを利用できるので、サーバー、オペレーティングシステム、デスクトップ、データベース、およびネットワーク全体の抽象化、分割、複製、エミュレートが可能です。

コンテナははるかに小さく通常はメガバイト単位で計測され、アプリケーションとその実行環境よりも大きなものはパッケージされません。 

VM は従来のモノリシックな IT アーキテクチャに適していますが、コンテナはクラウドCI/CDDevOps などの新しい技術との互換性を考慮して作られています。 

詳細はこちら

コンテナは、特定のタスクを実行する単一の機能をパッケージ化するために使用されることが多く、これはマイクロサービスとして知られています。マイクロサービスとは、アプリケーションの各部分をより小さく、より専門的なサービスへと分割したものです。これにより、開発者はアプリケーションの全体的なパフォーマンスに影響を与えることなく、アプリケーションの特定の領域の作業に集中することができます。 

これにより、アップデートや問題の修正が行われている間もアプリケーションは稼働しており、より迅速な改善、テスト、デプロイメントが可能となります。 

コンテナ内のマイクロサービスには、コンテナの持つ可搬性、互換性、拡張性がすべて備わっているため、マイクロサービスとコンテナの相性は良好です。 

それでは、このコンテナをどのようにして管理したらよいのでしょうか?そこでコンテナ・オーケストレーションの登場です。コンテナ・オーケストレーションは、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化します。 

Kubernetes はオープンソースのコンテナ・オーケストレーション・プラットフォームで、大規模なスケールでコンテナ化された分散アプリケーションの管理をサポートします。ソフトウェアを実行したい場所を Kubernetes に指示すると、コンテナのデプロイと管理に必要なほぼすべての作業を Kubernetes が行ってくれます。

Kubernetes は、Linux コンテナテクノロジーへの初期のコントリビューターの 1 社である Google のエンジニアによって開発および設計され、2015 年に Cloud Native Computing Foundation (CNCF) に寄付されました。つまり、CNCF が Kubernetes コミュニティの維持を担い、ボランティアのコントリビューターと管理者が Kubernetes の開発、維持、リリースに関与しています。

Red Hat は Kubernetes に関して Google と最初に連携した会社の 1 つです。Kubernetes 発表前から関わってきた Red Hat は、Kubernetes プロジェクトにおける第 2 位のコントリビューターになっています。

Red Hat OpenShift は、企業向けの Kubernetes です。つまり、Kubernetes コンテナ管理プロジェクトのコンポーネントを含むソフトウェア製品ですが、大規模企業にとって重要な生産性およびセキュリティ機能が付加されています。

「OpenShift」とは、OKD オープンソース・プロジェクト (以前の OpenShift Origin) から生まれたダウンストリームのコンテナ・オーケストレーション・テクノロジーを指します。「Red Hat OpenShift」は、Red Hat によるコンテナ・オーケストレーション向けの製品スイートを指します。Red Hat はさまざまな製品で OpenShift に事前設定済みのコンポーネントを加えてパッケージ化しています。それには次のようなものがあります。

Red Hat OpenShift の詳細

ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

Red Hat OpenShift Serverless を選ぶ理由

Red Hat OpenShift Serverlessは Knativeプロジェクト・ベースのサービスで、ハイブリッドやマルチクラウド環境でサーバーレスのワークロードをデプロイし、管理できます。

開発者が Red Hat OpenShift を選ぶ理由 | Red Hat

Red Hat OpenShift は、アプリ開発の複雑さを軽減するアプリケーション・プラットフォームです。開発者はどこでも、使い慣れたツールでアプリを構築し、デプロイできます。

サンドボックスコンテナとは?をわかりやすく解説 | Red Hat

サンドボックスコンテナは、アプリケーションの保護のために未テストのコード等を分離して実行する環境。コンテナを起動する仮想マシンを使用してプログラムを分離します。

コンテナリソース

関連記事