背景
新しいWindowsOSのPCを新調して、「Docker for Windows導入するか」と思っている最中にエラーに遭遇したので記述させていただきます。(Macが欲しかったけど、そこは置いておいて・・・)
※導入方法などは以下の参考などたくさん記事が存在するので省いています。
Docker for Windows を導入する際に、以下のような参考記事で導入するかと思います。
(参考:https://qiita.com/fkooo/items/d2fddef9091b906675ca)
その際に、「An error occurred Hardware assisted virtualization and data execution protection must be enabled in the BIOS.」などと出て、いろいろ「ん?」っとなったときの話です。
内容
問題
Docker for WindowsでHyper-Vも有効にしたし、インストールなども行って、windows10 proであることも確認した。
しかし、なぜかエラー背景で紹介しているエラーが出る。
解決
いろいろ探してみると、以下の記事で解決方法を乗せてくださっているのを発見。
1. BIOS設定の確認
BIOSのCPU関連設定で「Intel VT-x」「Intel Virtualization Technology」が無効になっていないか確認
→ 各種CPUによって異なるが、起動時にF1やF2を連打して、BIOS設定に移動して設定します。
2. Hyper-VをコマンドプロンプトでON
・コマンドプロンプトやPoserShellを管理者権限で起動(なんでもいいのでターミナル)
・「$ bcdedit」を打ち、「hypervisorlaunchtype」がautoになっていることを確認
・「hypervisorlaunchtype」がautoになっていなければ、「$ bcdedit /set hypervisorlaunchtype auto」を実行
・PC再起動
3. CPUがHyper-Vに対応しているか確認
・ Microsoftのサイト(http://download.sysinternals.com/files/Coreinfo.zip)からCPUの各機能や情報を確認
→ 「Coreinfo.zip」を解凍
・「Coreinfo.exe」をコマンドプロンプトなどにドロップしてCoreinfoを実行
・「HYPERVISOR」項目が「*」になっていることを確認
→ しかし、参考の記事でもあるが「-」となっていても動作するらしく結果が正しいとは言えないようです。
がどうやら解決方法らしい。
解決の解決
解決部分で初めに「2」や「3」から実行した。(BIOSはどうせ大丈夫だろう、再度起動するの面倒だしと思って後回し)
それでも解決せず、
An error occurred Hardware assisted virtualization and data execution protection must be enabled in the BIOS.
が出続ける。そこで、「1」が問題なんだろうということで、実行することに。
よし、やるかーと思いきや、「自分IntelのCPUじゃないじゃん・・・」ということに気づき、
マザーボードがASRock系統でAMDのRyzenだということに気づく。
んー、どうやってVirtualizationを有効化するのだ?笑となった。
そこで探していると、救世主が現れてくれました。
(参考:https://pera-lab.com/archives/2087)
1. PC起動し、URFIを起動
F2を連打すると、IntelのBIOSよりかっこいい画面が出現(笑)
2. 「Advanced」タブを選択し、「CPU Configuration」を開く
3. 「SVN Mode」項目がAMD-vになるので、「Enabled」に変更
4. 「Exit」タブを選択し、「Save Changes and Exit」を選択
5. Windowsを起動し、再度Docker for Windowsを立ち上げる
上記を実行すると見事にDocker for Windowsが起動しました~。
参考記事お陰でした。ありがとうございます。