仮想マシン(VM)とコンテナの違いは?図解でやさしく比較


VMとコンテナのアーキテクチャ比較 仮想マシン(VM) App A Guest OS App B Guest OS App C Guest OS ハイパーバイザー ハードウェア 各VMにOS丸ごと含む 起動: 数分 / サイズ: GB単位 高いセキュリティ分離 コンテナ App A + libs App B + libs App C + libs コンテナエンジン(Docker等) ホストOS(カーネル共有) ハードウェア OSカーネルを共有して軽量化 起動: 数秒 / サイズ: MB単位 高速スケーリング向き 実際のクラウド環境ではVMの上にコンテナを動かす構成が一般的
仮想マシンとコンテナのアーキテクチャ比較
ひよこ ひよこ

VMコンテナって両方とも「仮想化」なんでしょ?何が違うの?

ペンギン先生 ペンギン先生

仮想化のレベルが違うんだ。VMは「コンピューター丸ごと」を仮想化するけど、コンテナは「アプリの実行環境だけ」を仮想化するよ。

ひよこ ひよこ

もうちょっとわかりやすく…!

ペンギン先生 ペンギン先生

VMをマンションの一室に例えると、各部屋にキッチン・バス・トイレが全部ある感じ。コンテナはシェアハウスで、キッチンやバスは共有だけど、自分の部屋は独立しているイメージだよ。

ひよこ ひよこ

あー!だからコンテナのほうが軽いんだ。

ペンギン先生 ペンギン先生

そのとおり。VMは各マシンにOS丸ごと入るから起動に数分かかるけど、コンテナはホストOSのカーネルを共有するから数秒で起動できるんだ。

ひよこ ひよこ

じゃあコンテナのほうが優れてるの?

ペンギン先生 ペンギン先生

一概には言えないよ。VMはOS丸ごと分離されているから、セキュリティの隔離性が高い。銀行システムや機密性の高い環境ではVMが選ばれることも多いんだ。

ひよこ ひよこ

使い分けがあるんだね。どういう基準で選ぶの?

ペンギン先生 ペンギン先生

ざっくり言うと、マイクロサービスや頻繁にスケールする用途にはコンテナ、異なるOSが必要だったりセキュリティ分離が重要なケースにはVMが向いているよ。

ひよこ ひよこ

両方同時に使うこともあるの?

ペンギン先生 ペンギン先生

あるよ!クラウド環境ではVM上にコンテナを動かすのが一般的なんだ。AWSのEC2(VM)の上でEKS(Kubernetes)を動かすようなイメージだね。

ひよこ ひよこ

入れ子になってるんだ!面白い。

ペンギン先生 ペンギン先生

最近はFirecrackerのようにVMの安全性とコンテナの軽さを両立する「マイクロVM」技術も出てきている。AWS Lambdaの裏側で使われていて、業界のトレンドになっているよ。