ディア:「最新のコンテナ技術ってすごいんだね」
クラフ:「いや。注目されているのは最近だけれど、
コンテナは2006年ごろから機能自体は存在していて、
意外と古い(枯れた)技術なのさ」
ディア:「知らなかった。仮想化の時代からコンテナはあったんだね」
クラフ:「実は、コンテナも仮想化技術の一種なんだ。広く知られている従来の仮想化は、2000年代に広く普及した『サーバー仮想化技術』『ハイパーバイザー仮想化』のような、1つのサーバーリソースとそれを必要とする環境を分離する技術だよね」
サトル:「じゃあ、同じ仮想化なのに、従来の仮想化とコンテナ仮想化は何が違うのかな?」
クラフ:「コンテナは、ホストOSを共有する仮想化技術なんだ。従来の仮想化とコンテナ仮想化の違いから、コンテナの特長を説明してゆくよ」
ハイパーバイザー型の仮想化では、ハイパーバイザーというソフトウェアをインストールして、その上にOSやアプリを備えた仮想マシン(VM)と呼ばれる環境ごとにシステムが独立して動くんだ。1つの物理サーバー(ホストサーバー)の中に、複数のVMを設定することで、より多くの処理を可能にしているのさ。
一方、コンテナ型の仮想化では、コンテナ自体にはOSがないんだ。OSは一番下にあるホストOSだけなんだ。ホストOSの上にある『コンテナエンジン』がハイパーバイザーと似た役割をして、コンテナのアプリを動かしてくれるという仕組みだ。
コンテナはホストOSを共有する仮想化技術
サトル:「VMもコンテナもそれぞれが独立して動くポータビリティを持っているんだね」
クラフ:「その通り。ただ、コンテナとVMは、そのポータビリティの境界が違うんだ。コンテナは物理的にサーバーを分割するのではなく、あくまでサーバーOSは1つなんだ」
ディア:「他にはどんな違いがあるの?」
クラフ:「これまでのおさらいにもなるけれど、コンテナの中身はアプリとアプリのプロセスだけがパッケージ化されているよね。コンテナにはOSがないから、ホストOSのカーネルを共有して動く仕組みなんだ」
サトル:「コンテナエンジンが、ハイパーバイザーのような役割を果たすんだよね」
クラフ:「おお、よく理解しているね。ハイパーバイザー型の仮想化では、VMごとにOSが必要になるけれど、コンテナではホストOSを共有しているので、リソース効率に優れた仮想化技術だといえるんだ」
VMと比較するとコンテナはリソース効率に優れた仮想化技術