Dockerの概要説明

Docker
Docker公式ロゴ1b
©2020 Docker Inc. All rights reserved

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

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

 本記事では、他の仮想化技術と比較しながらDockerの概要を解説しております。

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、Windows
オーバーヘッド大きい小さい
消費リソース量多いとても少ない
他仮想環境への影響ないKernel動作不良の影響が
全コンテナに及ぶ

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

仮想バリエーション

 1社の業務システム内に様々な種類のOSやそのバージョンが乱立する構成というのは、運用管理的に煩雑ですので、通常は2~3種類で、バージョンは各種類ごとに同一バージョンという構成が多いと思います。

 Linuxだけで見てみた場合、大抵は1つのディストリビューションを選択しているでしょう。

 よって、1つの物理コンピュータ上に1つのkernelのみという条件は、重要度合が下がってくるのではないでしょうか。

オーバーヘッド

 これについてはオーバーヘッドとシステム要件とのトレードオフだと思います。

 ホスト型仮想化でなければシステム要件を満たさない場合は、オーバーヘッドは仕方がありません。

 しかし、コンテナ型仮想化でシステム要件を満たすのに、ホスト型仮想化でオーバーヘッド分の無駄遣いをしているのは問題でしょう。

消費リソース量

 ホスト型仮想化の場合、各OS共に、バージョンが上がっていくに従ってハードディスクやメモリの推奨容量も増加してます。

 それに伴って仮想環境のkernel部分のリソース消費量も仮想環境数分増えていくことになります。

 比較的容量単価の低いハードディスクはそれほど問題ないという考え方もあるかと思いますが、メモリはつらいものがあると思います。

 コンテナ型仮想化の場合は、kernel部分のリソース消費量が増えたとしても、影響は少ないことになります。

他仮想環境への影響

 ホスト型仮想化の場合は、仮想環境同士は個々のOSレベルで隔離されてますので、基本的に他への影響は少ないでしょう。

 しかし、コンテナ型仮想化の場合はkernelは共有されてますので、あるコンテナがkernelに影響を及ぼした場合、他のコンテナが影響を被ることはあると思います。

 他のコンテナへの影響が問題になる場合は、コンテナ型仮想化であるDocker環境は、ホスト型仮想化された仮想コンピュータ上にも作成可能ですので、オーバーヘッドを考慮しつつ、Docker環境をホスト型仮想環境で分割することを検討しても良いかもしれません。

まとめ

 Dockerは、上記のような特徴をもつコンテナ型仮想化ソフトウエアです。

 結局のところシステム要件次第だと思われます。

 もし要件に合うようでしたら検証されてみてはいかがでしょうか。

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

コメント

タイトルとURLをコピーしました