Dockerの概要説明


Dockerとは

 世の中にはコンピュータの仮想化技術として様々な技術がありますが、その技術の中でDockerは「コンテナ型仮想化」に分類されます。

 一般的に仮想化と言うと、VMwareやVirtualBOXが思い浮かぶと思いますが、これらは「ホスト型仮想化」と呼ばれています。

 

Dockerの構成概要

 「コンテナ型仮想化」と「ホスト型仮想化」の違いを明確にするために、双方を図で表しますと以下のようになります。

hvr-cvr02

 図内のホスト型仮想化ソフトウエアと仮想H/Wの部分がVMwareやVirtualBOXなどに相当します。また、コンテナ型仮想化ソフトウエアと仮想H/Wの部分がDockerなどに相当します。

 ホスト型仮想化は、個々の仮想環境単位に仮想H/Wとkernelが存在していますが、コンテナ型仮想化では、仮想環境が使用するkernelはホスト用kernelを共用することになります。

 ここが2つの仮想化技術の大きくことなるポイントになります。

 ホスト型仮想化は、1台の物理コンピュータ上に、仮想化ソフトウエアがサポートする様々なkernel環境を作成することが可能ですが、コンテナ型仮想化では、1つのkernelしか使用することが出来ないことになります。

 しかし、仮想環境内のKernelが存在しないということは、APとコンピュータとの距離を縮めることになるため、1台のコンピュータ上に1つのkernelで要件を満足する環境であれば、コンテナ型仮想化技術はすばらしいパフォーマンスを発揮することになります。

 

2つの仮想化技術の比較

 以下に、ホスト型仮想化とコンテナ型仮想化の比較表を示します。

項目 ホスト型 コンテナ型
仮想バリエーション

Intel系CPUで稼働する
ほとんどのOS

現状Linuxのみ
オーバーヘッド 大きい 小さい
消費リソース量 多い とても少ない
他仮想環境への影響 ない Kernel動作不良の影響が
全コンテナに及ぶ

 

 

 各項目について解説していきます。

 

仮想バリエーション

 1社の業務システム内に様々な種類のOSやそのバージョンが乱立する構成というのは、運用管理的に煩雑ですので、通常は2~3種類で、バージョンは各種類内で同一バージョンという構成が多いと思います。
 Linuxだけで見てみた場合、大抵は1つのディストリビューションを選択していると思います。
 よって、1つの物理コンピュータ上に1つのkernelのみという条件はそれほど重要ポイントではないと思います。

 

オーバーヘッド

 これについてはオーバーヘッドとシステム要件とのトレードオフだと思います。
ホスト型仮想化でなければシステム要件を満たさない場合は、オーバーヘッドの対価は必要な条件になりますので、問題ないと思います。
 しかし、コンテナ型仮想化でシステム要件を満たすのに、ホスト型仮想化でオーバーヘッド分の無駄遣いをしているのは問題があるのではと思います。

 

消費リソース量

 ホスト型仮想化の場合、各OS共に、バージョンが上がっていくに従ってハードディスクやメモリの推奨容量も増加してます。それに伴って仮想環境のkernel部分のリソース消費量も仮想環境数分増えていくことになります。
 比較的容量単価の低いハードディスクはそれほど問題ないという考え方もあるかと思いますが、メモリはつらいものがあると思います。
 コンテナ型仮想化の場合は、kernel部分のリソース消費量が増えたとしても、影響は少ないことになります。

 

他仮想環境への影響

 ホスト型仮想化の場合は、仮想環境同士は個々のOSレベルで隔離されてますので、基本的に影響を及ぼすことはないと思います。
 しかし、コンテナ型仮想化の場合はkernelは共有されてますので、あるコンテナがkernelに影響を及ぼした場合、他のコンテナが影響を被ることはあると思います。
 他のコンテナへの影響が問題になる場合は、コンテナ型仮想化であるDocker環境は、ホスト型仮想化された仮想コンピュータ上にも作成可能ですので、オーバーヘッドを考慮しつつ、Docker環境をホスト型仮想環境で分割することを検討しても良いかもしれません。

 Dockerは、上記のような特徴をもつコンテナ型仮想化ソフトウエアです。もしシステム要件に合うようでしたら検証してみてはいかがでしょうか。

 

 最後までお読みいただきありがとうございました。

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です