メニュー

コンテナとは

トピック
DevOpsソリューション

このページを共有

コンテナはオペレーティング システムの仮想化の一形態です。1つのコンテナは、小規模なマイクロサービスやソフトウェア プロセスの実行から、大規模なアプリケーションの稼働に至るまで、さまざまな用途に使用できます。コンテナ内には、必要な実行可能ファイル、バイナリ コード、ライブラリ、および構成ファイルがすべて含まれます。ただし、サーバやマシンの仮想化アプローチと比較して、コンテナにはオペレーティング システムのイメージが含まれていません。これにより、軽量で移動性に優れ、オーバーヘッドも大幅に低減されます。大規模なアプリケーションの導入では、複数のコンテナを1つ以上のコンテナ クラスタとして導入できます。このようなクラスタは、Kubernetesなどのコンテナ オーケストレーション ツールによって管理できます。

コンテナのメリット

コンテナは、開発者のローカル ノートパソコンからオンプレミスのデータセンター、さらにはクラウドまで、複数の環境でアプリケーションを構築、テスト、導入、再導入する合理的な方法です。コンテナには次のようなメリットがあります。

  • オーバーヘッドを削減
    コンテナにはオペレーティング システム イメージが含まれていないため、従来の仮想マシン環境やハードウェア仮想マシン環境に比べて必要なシステム リソースが少なくて済みます。
  • モビリティの向上
    コンテナで実行されるアプリケーションは、複数の異なるオペレーティング システムやハードウェア プラットフォームに簡単に導入できます。
  • 一貫した運用を実現
    DevOpsチームは、導入場所にかかわらず、コンテナ内のアプリケーションが同じように動作することを知っています。
  • 大幅な効率化
    コンテナを使用することで、アプリケーションの導入、パッチ適用、拡張をより迅速に行えます。
  • アプリケーション開発の向上
    コンテナは開発、テスト、本番サイクルを短縮する、即応性に優れたDevOpsの取り組みをサポートします。

コンテナのユースケース

コンテナの一般的な活用方法には、次のものがあります。

  • 既存のアプリケーションを最新のクラウド アーキテクチャにリフト&シフト
    既存のアプリケーションをより最新の環境に移行するために、コンテナを使用している組織もあります。この方法では、オペレーティング システムの仮想化による基本的なメリットの一部は得られますが、モジュール化されたコンテナベースのアプリケーション アーキテクチャのメリットを十分に享受することはできません。
  • 既存のアプリケーションをコンテナ用にリファクタリング
    リファクタリングの場合、リフト&シフトによる移行よりも手間ははるかにかかりますが、コンテナ環境のメリットを最大限に活かすことができます。
  • 新しいコンテナ ネイティブ アプリケーションを開発
    リファクタリングと同様に、このアプローチではコンテナのメリットを最大限に引き出すことができます。
  • マイクロサービス アーキテクチャのサポートを強化
    分散アプリケーションやマイクロサービスは、個々のコンテナビルディングブロックを使用して、分離、導入、拡張が容易になります。
  • 継続的インテグレーションと継続的デプロイメント(CI/CD)に向けてDevOpsサポートを提供
    コンテナ テクノロジは、同じコンテナ イメージからの合理的な構築、テスト、および導入をサポートします。
  • 反復的なジョブやタスクの導入を簡易化
    ETL機能やバッチ ジョブやバックグラウンドで実行されることの多い同様のプロセスをサポートするためにコンテナが、導入されます。

DockerとKubernetesはコンテナとどのように関連しているのでしょうか?

コンテナ環境に携わる方なら、コンテナ構築や管理に使われる2つの人気ツールやプラットフォームについて耳にしたことがあるのではないでしょうか。DockerとKubernetesです。

Docker は、コンテナ内でソフトウェアを作成および構築するために使用される、一般的な稼働環境です。Dockerイメージ(コピーオンライトのSnapshots)を使用して、コンテナ化されたアプリケーションやソフトウェアを、開発からテスト、本番環境まで、複数の環境に導入します。Dockerは、オープン スタンダードで構築されており、Linux、Microsoft Windows、その他のオンプレミスまたはクラウドベースのインフラなどほとんどの一般的なオペレーティング環境内で機能します。

しかし、コンテナ化されたアプリケーションは複雑になりがちです。本番環境では多くの場合、数百から数千の個別のコンテナが必要になります。そのような場合、Dockerのようなコンテナ稼働環境では、運用中のすべてのコンテナをオーケストレーションまたは管理するために、他のツールを使用することが有効です。

この目的のために試用される代表的なツールの1つに、Dockerをはじめとする複数のコンテナ稼働環境を認識する、コンテナ オーケストレーション ツール、Kubernetesがあります。

Kubernetesは、複数のコンテナの処理をまとめてオーケストレーションします。コンテナ化されたアプリケーションに必要なコンピューティング、ネットワーク、ストレージのリソース量など、基盤となるインフラ リソースの使用状況などを管理します。Kubernetesのようなオーケストレーション ツールを使用すると、本番環境でコンテナベースのワークロードを簡単に自動化および拡張できます。

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

コンテナ テクノロジは、仮想マシン( VM )やサーバ仮想化テクノロジと混同されることがあります。基本的な類似点がいくつかあるものの、コンテナはVMとは大きく異なります。

仮想マシンはハイパーバイザー環境で実行されており、各仮想マシンにはその内部に、独自のゲスト オペレーション システムと、関連バイナリ、ライブラリ、アプリケーションファイルが含まれている必要があります。そのため、大量のシステム リソースとオーバーヘッドが消費されます。特に、複数のVMが同じ物理サーバ上で実行され、それぞれに独自のゲストOSが搭載されている場合はその傾向が顕著です。

これに対し、各コンテナは同じホストOSやシステム カーネルを共有し、サイズもメガバイト程度と非常に軽くなっています。そのため、コンテナの起動にかかる時間はわずか数秒ということもあります(一般的なVMではギガバイト、および数分かかります)。

NetAppとコンテナ

NetAppは、コンテナ テクノロジを重視しており、アプリケーションや場所を問わず永続的ストレージを提供、管理できる実証済みのツールとイノベーションの開発に取り組んでいます。その重要な例の1つが、Tridentの開発です。Tridentを導入すると、コンテナ化したアプリケーションでオンデマンドの永続的ストレージの消費がかつてないほど容易になります。

NetAppは、ソフトウェア開発のスピードと即応性をさらに高め、DevOpsの促進に向け積極的に取り組んでいます。ストレージなどのインフラ リソースの消費は簡単にできるべきです。NetAppはアプリケーションをより簡単に拡張し、さまざまなプラットフォームに対応できるコンテナ管理ソリューションなどにより、その実現に尽力しています。

関連するソリューションと製品

DevOpsソリューション

データ管理とストレージにおける、国際的なリーダーの成功事例

セキュリティ通信を人物の動きの分析に活用

APIプラットフォーム プロバイダであるBandwidthは、音声、メッセージ、緊急電話などのサービスを通して多くの人々の生活に日々対応しています。Bandwidthの開発者は、企業のプラットフォームを進化させ、新しいサービスをいち早く市場に展開できるよう、イノベーションの促進に努めています。

スイスにあるこの銀行では、NetAppのフラッシュとMetroCluster IPで、あらゆる場所に存在するファイルを管理しています。

PostFinanceは、スイス市場向けに特別に開発または調整された先進的なツールとテクノロジを導入しています。NetAppのシステムは、銀行取引の安全性を確保する方法でファイル データを提供し、永続的なストレージで金融商品 / サービスの開発期間短縮に貢献しています。  

モニタを見て分析している人
Drift chat loading