違いを解説君

あるゆる物事の"違い"をわかりやすく解説する情報マガジン

matrix

ITの違い

vagrantとdockerの違いをわかりやすく解説!機能と使い分け方を紹介

仮想化技術について、どの程度知っていますか?

 

はなこ
最近、会社でも仮想化技術を活用しようという話になってね。

いくつか試してみようと思っているんだけど、『vagrant』と『docker』というものを見つけたの。

どちらも最近よく使われるツールだね。

僕も詳しいことはわからないけど。

たろう
はなこ
『vagrant』と『docker』って、いったい何が違うのかしら?

 

今回は、『vagrant』と『docker』の機能について調べ、その違いや使い分け方を解説します。

スポンサーリンク

『vagrant』と『docker』の機能

そもそも、仮想化技術とは、どのようなものでしょうか?

あなたが使っているパソコン(スマホやiPhoneでもいいです)には、WindowsやLinux、AndroidやiOSなど、オペレーションシステム(OS)がひとつだけ動作していますね。

パソコンやスマホ、そしてサーバと言われるコンピューターは、CPUを使って処理を行い、メモリやディスク上にデータを蓄えています。

その上でOSが動作し、アプリケーションが実行されて、いろいろな作業ができるわけです。

仮想化技術とは、

コンピューターやその上で動作するOS、アプリケーションなどを、コンピューター上で別の環境として構築するための技術

を指します。

『コンピューターの中に別のコンピューターを構築する』

と考えると分かりやすいですね。

では、『vagrant』と『docker』は、どのようなものなのでしょうか?

『vagrant』とは?

構成情報を記述した設定ファイル (Vagrantfile)を元に、仮想環境の構築から設定までを自動的に行うためのツール

のことです。

『vagrant』自体には仮想化のための機能はありません。

仮想化のための機能は、別の仕組み(VirtualBoxやvmwareなど)などを利用します。

例えばVirtualBoxを利用する場合、インストール後に仮想マシン(環境を構築するためのファイル)を作成し、OSやアプリケーションのインストールを行います。

これを1回だけ行うのであれば、それほど手間ではありませんが、たくさんのコンピューターにいくつも仮想マシンを立ち上げるとなると、かなり大変ですよね。

このような環境を構築するための情報を、あらかじめ設定ファイル(Vagrantfile)として用意しておき、自動で仮想マシンを立ち上げるためのツールが『vagrant』です。

 

『docker』とは?

OSレベルの仮想化を実現するためのソフトウェア

のことです。

従来の仮想化技術では、仮想マシンの中にOSをインストールして構築していました。

例えば、Windowsに仮想マシンを構築し、その中にWindowsをインストールすると、2つのWindowsが動作していることになりますね。

この場合、Windowsを動かすためのリソースは倍になります。

OSレベルの仮想化とは、ひとつのOS上で仮想空間を用意する技術のことを指します。

つまり、

仮想マシンはOSを共有する形で構築されますが、利用者側からは異なる環境があるように見えます。

それを実現するためのソフトウェアが『docker』です。

 

『vagrant』と『docker』の違い

『vagrant』と『docker』の機能を見れば、違いは明らかですね。

『vagrant』は、仮想マシンの構築を自動化して支援するためのツールです。

それに対して、

『docker』はOSレベルの仮想化を実現するためのツールです。

両者の違いは次のようになります。

『vagrant』と『docker』の違い

  • 『vagrant』は他の仮想化技術(VirtualBoxやvmwareなど)と併用して利用するのに対し、『docker』は単体で仮想化環境を構築できる。
  • 『vagrant』がサポートする仮想化環境では、OSもインストールする必要があるが、『docker』ではOSは共有される。

『vagrant』の場合、他の仮想化技術がなければ利用する意味がありません。

『docker』の場合、単体で仮想化環境を構築することができます。

また、

『vagrant』がサポートする仮想化環境ではOSもインストールする必要があります。

それに対して

『docker』の場合はOSは共有されます。

つまり、『vagrant』がサポートする仮想化環境では、異なるOSをインストールすることが可能なのに対し、『docker』ではOSを選択することはできません。

例えば、Windowsマシンに仮想化環境を立ち上げ、その上でLinuxを動かすようなことは『docker』ではできないことになります。

 

『vagrant』と『docker』の使い分け方

仮想環境

仮想環境

『vagrant』と『docker』では、利用目的が異なるので、使い分け方もはっきりしています。

VirtualBoxやvmwareなどで仮想化環境を構築したい時、その手間をできるだけ省きたいのであれば『vagrant』を使いましょう。

今動作しているOSを、そのまま利用する形で仮想化を実現したい場合は『docker』を使うことになります。

『vagrant』を使って構築された仮想化環境では、OSがその中で動作することになります。

仮想化環境の中でも最初はOSが立ち上がるため、起動するまで時間がかかります。

それに対して『docker』は、すでに立ち上がっているOSがそのまま使われるため、

『起動が非常に速い』

という大きなメリットがあります。

  • 仮想マシンに別のOSをインストールしたい場合は『vagrant』
  • 同じOSで仮想化環境を構築したい場合は『docker』

という形で使い分けるといいでしょう。

スポンサーリンク

まとめ

今回のポイントについて、まとめていきましょう。

ポイント

  • 『vagrant』とは、構成情報を記述した設定ファイル (Vagrantfile)を元に、仮想環境の構築から設定までを自動的に行うためのツールである。
  • 『docker』とは、OSレベルの仮想化(既存のOSを利用した仮想化)を実現するためのソフトウェアである。
  • 『vagrant』は、他の仮想化技術(VirtualBoxやvmwareなど)と併用して利用するのに対し、『docker』は単体で仮想化環境を構築できる。
  • 『vagrant』がサポートする仮想化環境では、OSもインストールする必要があるが、『docker』ではOSは共有される。
  • 仮想マシンに別のOSをインストールしたい場合は『vagrant』、同じOSで仮想化環境を構築したい場合は『docker』という形で使い分けるとよい。

『vagrant』も『docker』も、仮想化環境を構築する上で非常に便利なアプリケーションです。

仮想化環境を構築することは、今では非常に簡単になったので、一度試してみてはいかがでしょうか。

関連記事

-ITの違い

Copyright© 違いを解説君 , 2020 All Rights Reserved.