Dockerとは何か?仮想マシンとの違いから学ぶ

この記事は全4回にわたるDocker学習連載の第1回目です。
インフラ初心者や、これからDockerを学びたい開発者の方に向けて、
Dockerの基本的な考え方から仮想マシンとの違いまで、わかりやすく解説します。

なぜ?今Dockerなのか?

コンテナ技術の進化とともに、開発や運用の現場では Docker を使った環境構築が当たり前になりつつあります。
実際、僕の現場でも数年前から開発環境のDocker化が進み、AWS上ではEC2よりもECS(コンテナサービス)を使う機会が増えてきました。

こうした流れの中で、コンテナ技術はエンジニアにとって欠かせない知識になってきたなと感じています。
僕自身、日々Dockerを使っていますが、改めて初心に戻って基本からしっかり学び直してみようという気持ちで、この記事を書いています。

この連載では、Dockerの概念から、実際に手を動かして使うところまでを段階的に学んでいきます。

Contents

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

Dockerとは?

Docker は、Docker社が開発・提供している コンテナ型の仮想環境を作成・配布・実行するためのプラットフォーム です。
仮想マシン(Virtual Machine)と比べると、より軽量で高速に動作するのが特徴です。

仮想マシンを知っている人なら、仮想マシンの“軽量版”と考えてもらうとイメージしやすいかもしれません。
ここからは、仮想マシンとコンテナの違いを具体的に見ていきましょう。

仮想マシンとは

仮想マシン(VM) は、PCやサーバの上に別のOSを「仮想的に」動かす仕組みです。
たとえば VMware や VirtualBox、Hyper-V などのツールを使って、1台のPCの中に複数のOSを動かすことができます。

たとえば Windows の中に Hyper-V を使って Ubuntu を起動する、といった使い方ですね。
このとき、仮想マシンのOSによってはライセンス料が発生することもあります(Ubuntuなどは無料、Windowsは有料など)。

コンテナとは

一方のコンテナは、Dockerのようなエンジンを使ってアプリケーションを動かすための最小限の環境だけを用意し、それを起動します。
必要なミドルウェアやライブラリだけが入っていて、無駄がなく、軽くて早いのが特徴です。

たとえば nginx のコンテナイメージなら、nginx を動かすのに必要なものだけが入っているので、サイズも小さくて起動も速いです。
しかも多くのコンテナイメージは無料で使えます。

仮想マシンとコンテナの構造の違い

下記の図を見ると、仮想マシンとコンテナの構造の違いがひと目でわかります。

仮想マシンとコンテナ

※正確にはコンテナもホストOSの上で動いていますが、使う側から見るとOSを意識せず使えるので、図では省略しています。

まとめ

この記事では、Dockerとは何か、そして仮想マシンとの違いについて解説してきました。

  • Dockerは軽量な仮想化環境を作れるツール
  • 仮想マシンとの構造的な違いがある(OSを含むか否か)
  • この理解があると、今後のDocker操作がスムーズになる

次回は、仮想マシン vs コンテナの実例比較(WEBサーバ構築)をテーマに、実際の構築手順を比較しながら学んでいきます。お楽しみに!

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

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