結論:仮想マシンは「OSごと丸ごと再現する」重い箱、Dockerのコンテナは「アプリと必要なものだけを包む」軽い箱です。 起動が秒単位で速く、数を並べても軽いのがコンテナの強み。まずは仕組みの違いを押さえ、Dockerコースでコンテナを実際に動かすとイメージがつかめます(インストール不要・無料)。
仮想マシン(VM)とは
1台の物理マシンの上に、ハイパーバイザという仕組みで「仮想のPC」を作り、その中にゲストOS(LinuxやWindows)を丸ごとインストールして動かすのが仮想マシンです。中に完全なOSが入るので、環境としては本物のPCとほぼ同じ。ただしOSまるごとぶんのメモリ・ディスク・起動時間がかかります。
Dockerのコンテナとは
コンテナは、ホストのOSカーネルを共有しながら、アプリと依存物(ライブラリなど)だけを隔離して動かす仕組みです。OSを丸ごと積まないぶん軽く、起動は一瞬。「設計図(イメージ)」と「実体(コンテナ)」の関係は イメージとコンテナ ― 設計図と実体 で実際に手を動かして確かめられます。最初のコンテナは hello-world を動かす から。
何が違う?(早見表)
- 重さ:VMはOSごとで重い/コンテナはアプリだけで軽い
- 起動:VMは分単位/コンテナは秒以下(docker run でイメージから起動)
- 隔離の強さ:VMはOSレベルで強い/コンテナはプロセスレベル(十分実用的)
- 数を並べる:VMは数個で重い/コンテナは何十個も気軽に
「消えるデータ」に注意
コンテナは使い捨てが基本で、そのままだと中のデータは消えます。この考え方は コンテナは使い捨て ― なぜデータが消えるのか で体験でき、データを残す方法(ボリューム)は docker volume ― データの保管庫を作る に続きます。VMの「中に永続的に保存」とは発想が違う点です。
どっちを使う?
今の主流は「コンテナで軽くアプリを動かし、複数台に広げる」流れです。まずは Dockerコース を第2章から順に、ブラウザのシミュレータでコマンドを打って覚えましょう。土台のコマンド操作に不安があれば Linuxコース も同じくブラウザで試せます。使い方の手順だけ知りたい人は Docker使い方入門 をどうぞ。