Twitterを見てるとたまにVagrantとVirtualBoxを混同してる発言があってその度にイラッとしてるのでメモ。
tl;dr;
- DockerとVagrantはカバーしてる分野が異なるツールなので比較するのは間違い
- DockerとVagrantを比較してる場合、9割くらいの確率でVagrantとVirtualBoxを混同している可能性が高い
雑な説明
VirtualBoxとは
WikiPedia より引用
Oracle VM VirtualBox (オラクル ブイエム バーチャルボックス)とは、x86ならびにAMD64/Intel64にかかる仮想化ソフトウェアパッケージの一つ。
要はVMの実行環境です。
似たような領域をカバーするツールとしての比較対象は下記
Vagrantとは
WikiPedia) より引用
仮想機械の提供自体は、VirtualBoxをはじめとする仮想化ソフトウェアが行う。Vagrantは、これらソフトウェアが用意されているのを前提として、仮想機械の設定や立ち上げに特化している。
要は色々な種類のVMの操作を同一の設定ファイルとインターフェースで操作するためのソフトウェア。
当たり前ですがEC2とGCEとではAPIが全く違うので、それらをVagrantを介して同じコマンドでVMの起動や停止ができるのは便利です。
Vagrantが提供してるのは各VMの操作をするためのインターフェースの部分だけなので VirtualBoxやEC2などのVMの実行環境そのものは提供していません。
Vagrant単体で使うことはなく、
- Vagrant + VirtualBox(VagrantがデフォルトでVirtualBoxに対応してる)
- Vagrant + EC2(vagrant-aws を利用)
- Vagrant + GCE(vagrant-google を利用)
のように各VM環境に対応したproviderと組み合わせて使うことが多いです。
ここで注意してほしいのはVagrantにはDockerのproviderもある(Vagrant + Dockerの組み合わせがある)ことです。 *2
つまりDockerとVagrantは対立するものではないし、ツールとしての性質が違うので比較するのが間違いです。
Vagrantと似たような領域をカバーするツールを敢えて言うと(Dockerではなく)Docker ComposeやDocker Machineだと思います。(異論は認める)
Vagrant + VirtualBoxがよくある組み合わせだと思うのだけど、そのせいでVagrantとVirtualBoxが混同されている気がします。
よくある間違い
- Vagrantはオワコン、時代はDocker!
- Vagrantが下火なのは否定しないが比較対象が違う
- VirtualBoxとDockerを比較してるなら話が通じる
- 開発環境をVagrantからDockerに移行した
- 「開発環境をVagrant( + VirtualBox)からDocker( + Docker Compose)に移行した」ということを言いたいんだろうけど、なんかもにょる