トラブル内容
今までWindows10環境下で
- Vagrant
- VirtualBox
で仮想マシンを構築してたんですが
「今の時代、Dockerが使えないと話にならない」みたいな話をよく聞くので、試しにDockerを入れてみることにしました。
そこまでは良かったんですが
Dockerをインストールするとvagrant up
しても、Virtualboxが起動しなくなってしまった・・・。
>vagrant up
Stderr: VBoxManage.exe: error: VMMR0_DO_NEM_INIT_VM failed: VERR_NEM_MISSING_KERNEL_API_2 (VERR_NEM_MISSING_KERNEL_API_2).
VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
PS C:\Users\hamati\OneDrive\vagrant\ubuntu64_18>
このようにerrorを吐くように。
(ググってみると「DockerとVirtualBoxは共存できない」というのは割と有名なことだったみたいですが・・・)
解決策
原因をいろいろ検索した結果、
Windowsの機能
の中の Windowsハイパーバイザープラットフォーム
にチェックを付けると、再びvagrant up
できるようになりました。
▲この中のWindowsハイパーバイザープラットフォーム
にチェックをつける。そして再起動。
以下のようにDockerとVirtualBox、同時に起動できるようになりました。
原因
すごくややこしい話なんですが、順に解説すると
- 最近のCPUには仮想化機能(IntelCPUなら
VT-X
、AMDのCPUならAMD-V
という名前が付けられている)が標準で付いている。 VT-X
やAMD-V
を利用してWindows10でハイパーバイザー環境(要するに仮想マシン)を構築しようぜ!な機能をHyper-V
と言う。(HyperーV
はWindows10Pro以上じゃないと使えない。)- 「
Hyper-V
を利用してWindowsでLinuxを使えるようにしまっせー」なソフトをWSL2
と呼ぶ。 WSL2
からHyper-V
を利用する場合は、Windows10Pro以上じゃなくても使える。- Dockerは
WSL2
を利用してコンテナ環境をつくる。 - VirtualBoxもまた
VT-X
やAMD-V
を利用して仮想マシンを構築する。 - Hyper-VをONにしてしまうと、Hyper-Vが
VT-X
やAMD-V
を占有してしまって、他の仮想化ソフト(VirtualBoxなど)が仮想化できなくなってしまう。
という感じ。
図にすると以下のような感じ。
ここで、Windowsハイパーバイザープラットフォーム
をONにすると、Hyper-V経由でVT-XやAMD-Vを共有(?)できるようになるらしい。
要するに以下のような感じにできるらしい。
そんな感じです。
ちなみに余談ですが
Dockerを使ってみた結果、Vagrantより遥かに便利そうだったので、これを機にDockerに乗り換えることにしました。
なので別に今回調べた内容は完全に無駄になってしまったのでした・・・。
さようならVagrant。よろしくねDocker。
おわり
コメント