FIG-045

コンテナとVM — OSを抱えるか、共有するか

インフラ 2026.06.23 公開 読了 約10分

1台のサーバーで、アプリを何個も独立して動かしたい。その「仕切り方」には大きく2つあります。仮想マシン(VM)コンテナです。どちらも「箱に分ける」点は同じですが、箱がどこまでを抱え込むかが決定的に違います。

VMは、箱ごとにOS(ゲストOS)を丸ごと一式持ちます。マンションでいえば各部屋に発電所とボイラーまで備える感じ。一方コンテナは、土台のOS(カーネル)をみんなで共有し、箱にはアプリと必要な道具だけを入れます。下の図1で、それぞれ起動してメモリの使用量と起動の速さを比べてみてください。

🖥 仮想マシン (VM)
App
Guest OS
App
Guest OS
App
Guest OS
App
Guest OS
ハイパーバイザー
ホスト OS
物理マシン
0 0 MB 起動 約30秒/台
📦 コンテナ
App
App
App
App
コンテナエンジン (Docker)
ホスト OSカーネルを全員で共有
物理マシン
0 0 MB 起動 約0.3秒/台
「起動」を押して、VMとコンテナを同じ数だけ積んでみてください。
図1 — VMは1台ごとにGuest OSを抱えて重く・起動も遅い。コンテナはカーネルを共有するぶん軽く・一瞬で起動する

違いは「OSを抱えるか、共有するか」

VMは箱ごとにゲストOSを起動するので、メモリも時間も“OS一式ぶん”重くなります。代わりにOSレベルでしっかり隔離され、ホストと別のOS(LinuxホストでWindowsなど)も動かせます。コンテナはホストのカーネルを共有し、箱にはアプリと依存物だけ。だから数十MB・1秒未満で立ち上がり、同じマシンに何倍も詰め込めます。その代わり、土台のカーネルは共有なので隔離はVMより緩く、基本はホストと同じ種類のOSに限られます。

どちらが上ということはなく、使い分けです。強い分離やOSごと違える必要があればVM。素早い起動・高い集約率・同じ環境を配って回したいならコンテナ。最近は、VMの上にコンテナを乗せて「堅い隔離」と「軽快さ」の両取りをする構成もよく使われます。

用語ミニ辞書
仮想マシン(VM)
ハイパーバイザー上で、ゲストOSごと丸ごと仮想化した箱。隔離は強いが重い。
コンテナ
ホストのカーネルを共有し、アプリと依存物だけを包んだ軽い箱。起動が速い。
ハイパーバイザー
1台の物理マシン上で複数のVMを動かす土台のソフトウェア。
カーネル共有
コンテナがホストOSの中核(カーネル)を共用すること。軽さの源だが隔離は緩め。

まとめ

VMとコンテナの差は、箱がOSまで抱えるか、ホストと共有するかの一点に尽きます。図1で同じ台数を積むと、VMはメモリがぐんぐん増えて起動も待たされるのに対し、コンテナはほとんど増えず一瞬で立つのが見えたはずです。「軽くたくさん速く」がコンテナ、「重いが堅く何でも」がVM。目的に合わせて選ぶ —— それだけです。