仕事上、ウィンドウズマシン上で Linux ツールを使いたいというケースが多いため、Virtualbox や Vmware を使うことは結構ありました。
最近は、そういったソリューション以外にも、Kubernates やら Docker やら、そもそも KVM というのもあったり(KVMって単なるウィンドウマネージャだとずっと思ってたんですが仮想化技術だったんですね)、いろいろ乱立しているので、この辺りいったん整理しておきたいと思いました。
Vmaware, Virtualbox, Docker, Kubernetes, KVM
まず概要として、こちらのサイトを見ると、分かりやすかったです。
これによると、
- Vmware や Virtualbox はホスト型で、実在のHWの上にホストOSがいて、その上に仮想化アプリ(Vmware や Virtualbox )が動いて、その中で複数の仮想マシンを作ることができる。
- KVM はハイパーバイザー型で、ホストOSがなくて BIOS からいきなりハイパーバイザーが立ち上がって、その上で仮想マシンが作られる。
- Docker はコンテナ型で、仮想マシン全体(HW+ゲストOS)を作らず、サーバとしての機能を持つコンテナを仮想的に構築する。
という感じですかね。
KVM の詳細はこちらがわかりやすいかな。QEMU との組み合わせの話もありました。
こちらには、Docker と Virtualvox の違いについての議論がありました。
Dockerは、Linux上ではOSより上の部分だけ仮想化するので、マシンごと仮想化するVirtualBoxより軽量化できます(なお、WindowsやmacOSでは動かないので、Linuxの動くVirtualBoxを介して使う必要があります)
なるほど、分かってきた気がする。
じゃあ、Docker と Kubernetes は?
この記事のコンテナ技術に関する説明が分かりやすかったです。
今回のもう1つのキーワードが「Kubernetes」だ。これは簡単に言うと、様々な環境で稼働する数多くのDockerコンテナを、効率よく管理するための“オーケストレーションツール”である。
Docker自体はこうしたコンテナの“作成・廃棄”の機能は持っているが、コンテナを効率よく配置したり、管理したりといった機能は備えていない。こうした文字通りオーケストラの指揮者の役割を果たすのがKubernetesというわけである。
なるほど、Docker と Kubernetes 、Vmware と Virtualbox の関係とは異なるんですね。
こういった棲み分け、使ってる人には何てことない話なんですが、使ったことないと、全体像が見えないんですよね。
っということで、仮想化技術の概要理解でした。