• 会員限定
  • 2021/05/07 掲載

コンテナとは何か解説、従来の仮想化と何が違う?DockerやKubernetesとは?

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
記事をお気に入りリストに登録することができます。
システム開発において、仮想化は欠かせない技術です。しかし、従来の仮想化技術では、かなりの計算リソースを取られてしまうという欠点がありました。それを解決する新しい仮想化手法として「コンテナ」と呼ばれる技術が登場しています。本記事では、近年急速に広まっているコンテナについて、仮想化の基礎から「Docker」「Kubernetes」まで、やさしく解説していきます。
photo
仮想化手法の1つ、コンテナについて仮想化の基礎から始め、わかりやすく解説します
(Photo/Getty Images)

コンテナを知る前に…仮想環境の使われ方

 「コンテナ」とは、アプリの動作環境を仮想的に構築する技術の1つです。PCの中に仮想のPCを作りアプリを動かす技術と考えると分かりやすいです。

 仮想的なPCの中でアプリを動作させること自体はインターネットに接続している時点で当たり前のように行われているのですが、エンジニアやプログラマでない限りはあまり意識的に使うことがないかもしれません。そこで、コンテナについて解説する前に、初歩的なことですが「仮想環境」について理解しておきましょう。

画像
仮想化の概念図。それぞれ別の物理サーバを、(その上にあるOSとアプリはそのままに)仮想化によってまとめ、1つの物理サーバ上で複数のアプリを動作できるようにしている

 まず、身近な用途で仮想環境を使う例を挙げてみましょう。たとえば、MacOSの中でWindowsを起動させてWindows専用アプリを使ったり、Windowsの中にAndroidを起動させてAndroidアプリを使ったり、単純に使っているPCのOSとは別のOSを使うために仮想環境を構築することがよくあります。

 そのほかにも特定のアプリだけが動いているようにするためウイルス対策ソフトなどの常駐アプリがない環境を作ったり、不具合の多いアプリを使用中のOSから隔離する目的で仮想環境を作ったりすることもあります。

 ただ、仮想環境の用途として最も重要なのは「安全で効率的なアプリの開発や運用」を行うための仮想化です。複数のチームが同時にさまざまなアプリを開発する中で、動作テストをしたり、調整やアップデートをしたり、ユーザーに使ってもらったり、さまざまなケースでアプリが使われます。ほかのチームと同じ環境が必要な場合、運用中のシステムとまったく同じ環境が必要な場合、ユーザーごとに異なる環境が必要な場合、それぞれのユースケースにおいて必要な環境が異なります。

 この環境ごとに別々のPCやサーバを用意していたのでは、ハードウェアがいくつあっても足りません。そこで、1つのサーバやPC上に仮想的に必要とされる環境を構築し、それぞれの用途で自由にアプリを使用できるようにするのです。

コンテナは従来の仮想化と何が違うのか

 従来の仮想化では、1つの仮想環境の中に必要なものをOSからすべて作ってしまう方式でした。これは異なるOS環境を使いたい場合には有用でしたが、実際の開発・運用においては「OS周りは同じでいいのに」というケースが多く、いちいちOSまで作ってしまうのはリソースの無駄になっていました。そこで登場したのが「コンテナ」です。

 コンテナ環境ではOS周辺の環境は共通で利用する一方、アプリが使用するCPU・メモリ・ファイル・プロセス空間などは別々にまとまった「コンテナ」として管理します。

画像
従来の仮想化とコンテナの違い。仮想化ソフトの代わりに、コンテナを動作させるコンテナエンジン(後述の「Docker」など)がホストOS上にある。各コンテナは独立して動作する

 これにより、アプリを実行するのに十分な独立した仮想環境を得ながら、OS関連でリソースを使わないため単純にリソースが節約できます。さらに、仮想環境の構築・記録・削除が素早くなるため、軽量のサーバでも仮想環境が作れるという大きなメリットにつながっています。

 一見すると、構造的にはOSを重複させているかどうかの違いしかありません。そこで、PCやスマホの起動やシャットダウンをイメージしてもらえると分かりやすいのですが、OSの構築や正常なシャットダウンにはかなりの時間がかかります。OSが使用するリソースも馬鹿にならないため、OSを節約できるだけでもかなりの効率化になるのです。

 例えるなら、ワンルームのアパート経営とシェアハウスのアパート経営の違いをイメージすると良いかもしれません。ワンルーム(従来の仮想環境)ならユーザーそれぞれにキッチンやトイレが必要ですが、シェアハウス(コンテナ)なら共用部分が1つで済むので賃借人には低コストで提供できます。また、退去時の清掃や入居時の契約などもシェアハウスなら簡単です。

画像
物流業界でのコンテナ同様、「入れ物」としてアプリの実行環境をひとまとめにしています
(Photo/Getty Images)

 ただし、コンテナでは他のユーザーとの共有部分が存在するため、共有部分に満足が行かない場合には却って使いづらい手法になります。自由にOSが変更できないので、他のOSやバージョン違いのOS、微妙に設定が違うOSなどでテストすることができません。開発の真っ只中で基本的な動作テストができればいいという場合ならそれでも良いのですが、開発終盤で「実際の使用環境でテストしたい」という場合にはOS環境を変えられないのはかえって不便です。

【次ページ】コンテナでよく聞く単語「Docker」「Kubernetes」とは?

関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます