仮想マシン vs コンテナの実例比較(WEBサーバ構築)

前回の記事では、「仮想マシン」と「コンテナ」がどんな仕組みかについて紹介しました。
イメージはつかめたでしょうか?

今回は、nginxのWEBサーバをローカルに構築するというテーマで、仮想マシンとコンテナでは作業手順にどんな違いがあるのかを比べてみたいと思います。

contents

  1. Dockerとは何か?仮想マシンとの違いから学ぶ
  2. 仮想マシン vs コンテナの実例比較(WEBサーバ構築) ⇦今ここ
  3. dockerコマンドを実際に使ってみよう
  4. Docker Composeやボリュームの基礎

仮想マシンの構築手順

仮想マシンでWEBサーバを構築する場合、主に以下のような手順になります。

① 仮想化ソフトのインストール

まずは仮想マシンを動かすためのソフト(仮想化プラットフォーム)を用意します。
僕の場合、WindowsならHyper-V、LinuxならVMwareを使うことが多いです。

② OSイメージのダウンロード

仮想マシンで使用するOSのイメージをダウンロードします。
UbuntuやAlmaLinuxなどの無料OS、有料ライセンスが必要なWindows ServerやRHELなど、用途に応じて選びます。

③ 仮想マシンのリソース設定と起動

仮想マシンを構築する際には、CPU・メモリ・ディスク容量などのリソースを設定します。
このとき、起動するOSと、nginxなどのミドルウェアを動かす分をあらかじめ見積もっておく必要があります。

④ OSの設定とnginxのインストール

仮想マシンを起動したら、OSの初期設定やパッケージのインストール、nginxの導入などを手動で行います。
この手順はいわゆる「サーバ構築」と呼ばれるもので、慣れないうちはやや大変です。

コンテナの構築手順

同じnginxサーバをDockerのコンテナで構築する場合、手順は以下のようになります。

① Dockerのインストール

Docker CLIや各種ツールを個別に入れてもいいですが、Docker DesktopRancher Desktopを使えばまとめて環境が整います。

② Dockerfileの作成

nginxのベースイメージを使って、必要な設定(例:confファイルのコピーなど)をDockerfileに記述します。

もちろん、コンテナを起動してから設定してイメージ化する方法もありますが、再利用性や保守性を考えるとDockerfileにまとめておくのがベストです。

③ コンテナの起動

作成したDockerfileをもとに、コマンドでコンテナを起動します。
Dockerはリソースを効率的に割り当ててくれるので、仮想マシンのように事前設定をする必要はほとんどありません。

使用できるDockerイメージは Docker Hub に多数公開されています(※利用にはログインが必要)。

まとめ

仮想マシンとコンテナ、それぞれの構築手順を比較してみると、違いがかなり明確だったのではないでしょうか。

仮想マシンは、準備や設定に時間がかかり、構築コストも高め。
一方で、コンテナは軽量かつシンプルで、Dockerfileを使えば構築の自動化・再利用も簡単にできます。

リソース面でも、仮想マシンはOSごとに重くなりやすく、複数台を動かすとローカルのリソースを圧迫しがちです。
コンテナは最小限の構成で済むため、複数起動しても軽快に動作します。

表にまとめるとこんな感じですね:

仮装マシンコンテナ
構築の作業量OSの設定やミドルウェアのインストール、設定が必要dockerファイルの作成(ミドルウェアの設定含む)
リソースの指定起動前に各仮想マシン毎に指定dockerがよしなにしてくれるので不要

僕の現場でも、「仮想マシンは重い、コンテナは軽くて便利」という印象が強く、今ではDockerを使った環境構築が当たり前になっています。

次回はいよいよ、Dockerコマンドを実際に使ってみる実践編です!

 
 

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村