こんにちは。
キャスレーコンサルティング TS(テクニカルサービス)部 野田です。
仮想化技術の一つであるDocker。
かなり軽量で使いやすい仮想化技術として、IT技術者の間でメジャーに使われています。
そんなDockerがなぜ利用されているのか、他の仮想化技術と何が違うのか、紹介したいと思います。
1.Dockerとは
一言で表すならDockerは、「軽量なコンテナ型の仮想化環境」です。
Dockerはコンテナ型仮想化と称されており、なんといってもその軽量さが売りです。
ホスト型やハイパーバイザー型と違い、ホストのカーネルを直接使用するため、オーバーヘッドが小さくなっています。
※Dockerの基礎情報については、過去に記事にしたものがあるので、そちらをご覧ください。
ちなみに、最近になってWindows Server 2016/Windows 7でも利用出来るようになりました。
ただし、Windows用コンテナはWindowsのみでしか実行できませんので、ご注意ください。
2.Dockerとほかの仮想化技術の違い
では、他の仮想化技術との違いがどのようなものであるか、以下に記していきます。
ここでは、コンテナ型・ホスト型・ハイパーバイザー型の3つを比較していきます。
■コンテナ
- 専用のハードウェア、ソフトウェアの調達が不要
- 単一のOS上で、複数のコンテナを隔離した状態で実行可能
ただし、基礎となるOS上に、異なるOSを動かすことは不可
(例:Linux上でWindowsコンテナを動かすなど) - コンテナ間で基礎となるOSは、共有される
- コンテナは、プロセスとして実行される
- Linux上では、LXC(LinuxContainers)やlibcontainerが利用される
■仮想化(ホスト型)
- 専用のハードウェア、ソフトウェアの調達は不要
- ホストOSに対して土台となる仮想化ソフトウェアを導入し、その上でゲストOSを動作させることが可能
※Vmware、Oracle Virtual Boxなど - 仮想マシン(VM)毎に、異なるOSを動作させることが可能
■仮想化(ハイパーバイザー)
- 専用のハードウェア、ソフトウェアの調達が必要
- サーバへ直接仮想化ソフトウェアをインストールすることで、
仮想マシン(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の良さを存分に紹介しましたが、他の仮想環境が良くないと言うわけではありません。
使う場面によってメリットがありますので、使い分けの参考として本記事が役に立てば幸いです。