Hyper-Vについて(2019)
Hyper-Vに関する知識が必要になったので調べてみた。
Hyper-Vとは
WIndowsの一部OSに搭載されている仮想化機能。
2008年に正式発表された機能だが、当時Microsoftが仮想Windowsマシンのみをサポートしていたため、Hyper-Vを利用した仮想Linuxマシンについては制限が生じることが多かった。(機能低下・時刻同期・コンソール間のコピーペーストなど)
そういった背景からHyper-Vで仮想Linuxマシンを構築することをよしとしない意見もあった。
しかし2019年現在、仮想LinuxマシンもMicrosoftによってサポートが強化されて当時よりも使いやすくなり、ネガティブな意見は少なくなっている。 Hyper-VではLinuxのコンテナ技術を最大限利用できないという問題があるらしいが、これについてはHyper-V上でDockerを介することで対応する。
Hyper-VでLinuxを稼働させることの利点と制限 [ 5nine ] | VMware/Hyper-V(仮想化)クラウド対応ツール 技術ブログ
ちなみに、WSL2の仮想環境はこのHyper-Vで構築されている。 また、VMwareやVIrtualBoxで利用している機能はHyper-Vと排他的な関係にあるため、WSL2上でそれらのソフトウェアを実行することは不可能となった。
コンテナとは
そもそもコンテナ技術とは何か。自分自身、Dockerを使い出して初めて「コンテナ」という用語を知った。
VMが「ハードウェアレベルの仮想マシン」だとすると、コンテナは「OSレベルのアプリケーション実行環境」であり、それぞれの環境に割かれるリソースや隔離レベルが異なっているため、それぞれにメリットとデメリットがある。 例えば、従来のホスト型VMではホストOSの上にゲストOS(仮想マシン)ごと構築していたため、オーバーヘッドが大きく多くのリソースが割かれてしまうという問題があるし、コンテナの実行環境についてはホストOSに依存しており、古いOS上で動かしているコンテナで新しいOSの機能を実行することはできない。
コンテナ技術についてはこちらの資料が参考になる。 employment.en-japan.com
www.slideshare.netホスト型VMとハイパーバイザー型VMの違い
上記コンテナの説明の中ではホスト型VMの『オーバーヘッドが大きい』という記述を入れたが、VM仮想化ではこの問題を解決するための「ハイパーバイザー型」という仮想化技術を利用したものもある。 「ハイパーバイザー」と呼ばれるソフトウェアをホストOS上で起動し、その上で複数のゲストOS(仮想マシン)を運用することが可能となる。
ただし、軽量化についてはホスト型VMと比べて、という話であり、コンテナよりは遅い。 qiita.com
WSLとDockerの共存は可能か?
WSL1時代はいくつか問題が出ていたようだが、WSL2ではDocker活用を前提とした作りになっているようで、Docker側もWSL2に最適化したプラットフォーム対応を行なっている。
www.reddit.com forest.watch.impress.co.jp www.publickey1.jp
Docker for Macの動作を軽くするためにMacのスペックを上げるというのはなんとも落語感がある話なので、Windowでの開発もありかなと思い始めている。
WSL2がダメならダメでLinuxマシンを使うのも一つの手。
参考記事:
Hyper-V - Wikipedia
Hyper-VでLinuxを稼働させることの利点と制限 [ 5nine ] | VMware/Hyper-V(仮想化)クラウド対応ツール 技術ブログ
ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要 | Think IT(シンクイット)
ハイパーバイザ - Wikipedia