こんにちは。
キャスレーコンサルティング TS(テクニカルサービス)部 野田です。

仮想化技術の一つであるDocker。
かなり軽量で使いやすい仮想化技術として、IT技術者の間でメジャーに使われています。

そんなDockerがなぜ利用されているのか、他の仮想化技術と何が違うのか、紹介したいと思います。

1.Dockerとは

一言で表すならDockerは、「軽量なコンテナ型の仮想化環境」です。

Dockerはコンテナ型仮想化と称されており、なんといってもその軽量さが売りです。
ホスト型やハイパーバイザー型と違い、ホストのカーネルを直接使用するため、オーバーヘッドが小さくなっています。
※Dockerの基礎情報については、過去に記事にしたものがあるので、そちらをご覧ください。

ちなみに、最近になってWindows Server 2016/Windows 7でも利用出来るようになりました。
ただし、Windows用コンテナはWindowsのみでしか実行できませんので、ご注意ください。

2.Dockerとほかの仮想化技術の違い

では、他の仮想化技術との違いがどのようなものであるか、以下に記していきます。
ここでは、コンテナ型・ホスト型・ハイパーバイザー型の3つを比較していきます。

■コンテナ

container01

  • 専用のハードウェア、ソフトウェアの調達が不要
  • 単一のOS上で、複数のコンテナを隔離した状態で実行可能
    ただし、基礎となるOS上に、異なるOSを動かすことは不可
    (例:Linux上でWindowsコンテナを動かすなど)
  • コンテナ間で基礎となるOSは、共有される
  • コンテナは、プロセスとして実行される
  • Linux上では、LXC(LinuxContainers)やlibcontainerが利用される

■仮想化(ホスト型)

container02

  • 専用のハードウェア、ソフトウェアの調達は不要
  • ホストOSに対して土台となる仮想化ソフトウェアを導入し、その上でゲストOSを動作させることが可能
    ※Vmware、Oracle Virtual Boxなど
  • 仮想マシン(VM)毎に、異なるOSを動作させることが可能

■仮想化(ハイパーバイザー)

container03

  • 専用のハードウェア、ソフトウェアの調達が必要
  • サーバへ直接仮想化ソフトウェアをインストールすることで、
    仮想マシン(VM)毎に仮想H/Wを再現し、OSやアプリケーションを複数実行させることが可能
    ※ESXi、KVMなど
  • 仮想マシン(VM)毎に、異なるOSを動作させることが可能
  • ホストOSを必要としないため、ハードウェアを直接制御することが可能
  • コンテナと比較すると、1台当たりのリソース消費量が多く、起動にも時間がかかる

3.Dockerを使うメリット・デメリット

上記を踏まえた上で、コンテナ型にあたるDockerのメリット・デメリットを挙げていきます。

■Dockerの主なメリット

  • 構成が仮想化よりも単純なため、高密度化が可能
  • 他の仮想化技術に比べ、オーバーヘッドが少ない
  • 新しいマシン(コンテナ)の起動が、仮想マシン(VM)より高速

■Dockerのデメリット

  • 土台となるOSとは異なるシステムを、コンテナとして稼働させることは出来ない
  • 複数のディストリビューションを、混在させることは不可能
  • カーネルをすべてのコンテナで共有するため、カーネルに対する構成変更操作は個別に行うことが出来ない

一番始めにも記載した通り、Dockerは軽さが売りです。
コンテナ一つ一つに必要なリソースが少ないため、高いスペックのPCを必要とすることが無くなりました。

また、「Dockerハブ」と呼ばれるリポジトリから、
必要な環境をすぐにダウンロードして、使用することが出来るため、工数削減にも一役買っています。

そんなDockerの恩恵を最大限に受けられるのは、開発者による開発、テスト工程だと思います。
開発者が開発するための環境を用意するには、ハードウェア、ソフトウェアの調達や設置場所の考慮など
様々な要因に対する検討が必要となりますが、
Dockerであれば、少ないリソースで必要な開発環境を素早く揃えることが出来ます。
これは嬉しいことですね。

加えて、「開発に失敗してしまった!」「環境がぐちゃぐちゃになってしまった!」などのトラブルが発生しても、
Dockerの環境は使い捨てが出来ますので、直ぐに新しい環境を作り直すことが出来ます。

4.まとめ

いかがでしたでしょうか。
今回はDockerの良さを存分に紹介しましたが、他の仮想環境が良くないと言うわけではありません。
使う場面によってメリットがありますので、使い分けの参考として本記事が役に立てば幸いです。