【Docker基礎】Dockerと仮想化技術の違い

 Docker はよく仮想化技術(VirtualBox や VMware など)と比較されがちですが、実は 「サーバをまるごと仮想化する」 ものではありません。正しくは、「ホストの OS 機能を一部借りながら、実行環境をコンテナとして隔離する」技術です。ここでは、Docker と一般的な仮想化技術の仕組みを簡単に比較し、その違いをわかりやすく解説します。

仮想化技術とは

 仮想化技術(VirtualBox、VMware、AWS EC2 など)では、あたかも物理的なマシンが存在するかのように ハードウェアをソフトウェアでエミュレート します。

仮想マシン (VM)

  • マザーボード、CPU、メモリなどのハードウェアを“ソフトウェア”で再現
  • 1台のホスト上に複数の“疑似マシン”を用意できる。独立したマシンとして認識されるので、好きな OS(Windows、Linux など)を入れて運用可能

代表的な仮想化ソフトウェア

  • VirtualBox:オラクル社の無料ツール
  • VMware:商用の有力ツール
  • Hyper-V:Windows Server 搭載の仮想化機能
  • AWS EC2:Amazon Web Services 上で提供される仮想マシン環境

Docker は「OSごと仮想化」ではない

 Docker は VM のように ハードウェアを仮想化しません。その代わり、ホストのカーネル(Linux)を共有 しつつ、コンテナ内部を論理的に分離(名前空間、cgroups など)して軽量な実行環境を提供します。

仮想化技術 (VM)Docker (コンテナ)
仮想化の単位ハードウェア全体 (CPU, メモリ, HDD など)プロセスレベルで OS 機能を共有し、一部を隔離
OSの扱い各 VM にフルの OS をインストール可能コンテナ内は “OSっぽいもの” だが、実際にはホストの OS カーネルを共有
リソース消費OS ごと起動するため重い (ブートやメモリ消費が大きい)軽量 (コンテナの起動が速く、メモリ消費も少ない)
バージョン依存どんな OS でも自由にインストール可能ホスト側が Linux である必要がある (Windows/Mac でも裏で Linux VM を使う)

なぜホストが Linux 必須なのか?

Docker コンテナは Linux のカーネル機能を利用 して分離を実現しているため、ホストが Linux であることが前提です。

  • Windows や Mac 上で Docker を動かす場合でも、裏で WSL2 (Windows) や HyperKit (Mac) などの方法で Linux 環境を用意している。
  • コンテナ内に見える “OS (Linux)” はフル機能ではなく、ホスト Linux に依存しながら動作する。

AWS EC2 と Docker の違い

 AWS の EC2 は、VirtualBox や VMware と同じく 仮想マシン (VM) 環境 です。インスタンス(仮想マシン)を立ち上げると、そこには完全に独立した OS が動き、何をインストールしても基本的には干渉し合いません。

  • EC2 の “AMI” は Docker の “イメージ” と似ていますが、AMI は VM 全体 (OS含む) を保存したもの。
  • Docker のイメージは “OS の一部 + アプリケーション + ライブラリ” などをパッケージ化したもので、フル OS ではない

まとめ

  • 仮想マシン (VM):ハードウェアレベルで仮想化し、完全に独立した OS をブートする
  • Docker (コンテナ):Linux のカーネルを共有しつつ、論理的にプロセスやファイルシステムを分離
  • Docker は VM と比べて 軽量・高速起動 が特徴。ただし ホストは Linux が必須 という条件がある
  • AWS EC2 は VM ベースの仮想マシンなので、Docker との構造的な違い は VirtualBox や VMware と同様

 このように、Docker は OS をまるごと仮想化する従来型の技術とは異なり、「ホスト OS の Linux 機能」を活用して実行環境を分離する軽量コンテナ です。次の章では、Docker コンテナが持つ「軽量かつ素早く起動できるメリット」や「環境差異を吸収する利点」について、さらに詳しく掘り下げていきます。