コンテナと**仮想マシン(VM)**はどちらも分離された環境を提供しますが、動作方式が異なります。コンテナはホストのOSカーネルを共有する(軽量)のに対し、VMは仮想化されたハードウェア上で完全なゲストOSを実行します(より重い)。この違いを理解することで、コンテナがなぜ効率的なのかが説明されます。
主なアーキテクチャの違い
VIRTUAL MACHINE: CONTAINER:
┌─────────────────┐ ┌─────────────────┐
│ App + Libs │ │ App + Libs │
│ GUEST OS (full)│ ← full OS each │ (shares kernel) │ ← no guest OS
├─────────────────┤ ├─────────────────┤
│ Hypervisor │ │ Docker Engine │
├─────────────────┤ ├─────────────────┤
│ Host OS │ │ Host OS │
│ Hardware │ │ Hardware │
└─────────────────┘ └─────────────────┘
はハードウェアを仮想化し、ハイパーバイザーを介して(独自のカーネルを持つ)を実行します。はを共有し、アプリケーションのみを分離します — コンテナごとに別々のOSはありません。
