様々な局面で活用され、今や開発者にとってなくてはならない存在である仮想化技術。ハードウェアやネットワークなどを仮想的に表現する技術や、仮想化技術を便利に使えるツールなども、次々と開発されています。その中でも、開発者の間でコンテナ型仮想化技術である「Docker」が、最近注目を集めています。本記事では、Dockerの人気を支えている要素「軽さ」「使いやすさ」と、その要素を実現する技術、そしてDockerの要素を活かして実際に活用した事例を紹介します。
Dockerの「軽さ」
仮想化技術は利便性が高く、様々なシーンで活用されています。しかしながら、従来の仮想化技術はやはり物理環境と比較すると「起動が遅い」「処理速度が落ちる」といった弊害があり、ユースケースが限られてしまっていることがありました。
Dockerは仮想化技術でありながら圧倒的な「軽さ」を実現し、その問題を解決しています。まず、ハードウェア仮想化や物理マシンとの比較を通して、Dockerの「軽さ」を見てみましょう。
起動が速い
ハードウェア仮想化は、CPU、メモリ、ハードディスクなどのハードウェアを仮想化しているため、ハードウェアやOSの起動が必要となり、起動に分単位の時間を要します。
一方で、コンテナ型仮想化においては、コンテナ起動時にはOSはすでに起動しており、プロセスの起動のみ行うため、秒単位の時間で完了します。
処理が速い
OS上のアプリケーションを操作する場合、ハードウェア仮想化においては、仮想化されたハードウェアおよびハイパーバイザーを経由して処理が行われます。この経由している分だけ、通常の物理マシンよりも処理に余分な時間(オーバーヘッド)を要します。
一方で、コンテナ型仮想化はカーネルを共有しており、各プロセスが処理を行うのと同じ程度の時間しかかからないため、ほとんどオーバーヘッドがありません。
物理マシンとコンテナ型仮想化の比較
「軽さ」の検証の一貫で、物理マシンと比較してどのくらいのオーバーヘッドがあるのかということを、「sysbench」というベンチマークツールを使って、パフォーマンス計測してみました。
今回の計測では、CPU、メモリ、ファイルI/Oの3つの観点で、物理マシン、コンテナ型仮想化(Docker)、ハードウェア仮想化(VirtualBox)の3つを比較しています。結果は次のグラフのようになりました。
物理マシンとコンテナ型仮想化のパフォーマンスは、全ての項目においてほぼ同等という結果になっています。
一方で、ハードウェア仮想化はメモリ、ファイルIOでは約2倍、CPUでは約5倍の時間がかかっています。
この結果から、コンテナ型仮想化では、物理マシンと比較しても、パフォーマンスの劣化がほとんどないことが分かります。
この記事は参考になりましたか?
- この記事の著者
-
遠藤 博樹(エンドウヒロキ)
株式会社ワークスアプリケーションズ Advanced Technology&Engineering Div.所属。製品や社内システムに対するインフラ研究を担当し、製品のクラウド化や開発用システムの分散化など製品の品質向上や開発者の生産性の向上を目的に、インフラからの視点で新しい技術を社内に取...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
秋吉 真衣(アキヨシマイ)
株式会社ワークスアプリケーションズ Advanced Technology&Engineering Div.所属。クラウド運用研究グループにて自社の新サービスである「CCMS」の開発・導入支援を担当。クラウド上での自社製品の運用の汎用化・自動化を進める中で、自動化ツールの開発や周辺技術の調査・検証な...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



