LoginSignup
6
6

More than 3 years have passed since last update.

【環境構築】Dockerで起動エラー!Hyper-Vを有効にして再びDockerを起動するための手順

Posted at

Docker起動でエラー発生

仮想環境の構築にはDockerを使いたい派なのですが、どうしてもVMwareを使わなければいけない事情があり、しばらくVMwareを使用していました。開発も落ち着いてきたので、そろそろDockerを使おうかなと起動しようとしたところ、エラー画面共に頬を赤く染めたDockerクジラの絵が表示されました。VMwareを使う際にHyper-Vを無効にしたので、その影響だと思います。

マウント確認.png
今回は上記のエラーが出たときに必要な手順をまとめました!

環境

環境 バージョン
Windows10 1909
Docker(Community Edition 18.06.1
VMware Workstation 15 -

解決策

bcdeditを実行して確認できるhypervisorlaunchtypeの値が「Off」だったら、
管理者権限で起動したPowerShellで $ bcdedit /set hypervisorlaunchtype auto を実行後、PCを再起動する!

やったこと

  1. Docker起動でエラー発生
  2. Hyper-Vと仮想化の有効、無効を確認
  3. bcdeditで状態を確認
  4. 再起動&Docker起動

詳細

1. Docker起動でエラー発生

マウント確認.png
Dockerを起動したところエラーが表示されました。
リンク先を確認してみると、Virtualizationの欄にBIOSという文字を発見。とのことなので、現在のPC状態を確認します。

2. Hyper-Vと仮想化の有効、無効を確認

マウント確認.png
※右ウィンドウが自分の設定
Hyper-Vは有効になっている。

マウント確認.png
※右ウィンドウが自分の設定
仮想化も有効になっていました。

3. bcdeditで状態を確認

PCの再起動やコマンドによる設定の確認も試しましたが、状況は変わらず。

改めて調べてみると、Hyper-Vが有効になっているのにエラーが起きている現象が多々あることを発見しました。そこで、下記の記事と照らし合わせてみると、bcdedit コマンドで確認できる、hypervisorlaunchtype の値を確認する必要があることが分かりました。

【Docker】 Docker for Windows導入時のエラー対応
https://qiita.com/LemonmanNo39/items/b1b104e7fb609464727b

マウント確認.png
実際に確認してみると、hypervisorlaunchtype Off となっていたので、管理者権限で起動したPowershellで下記コマンドを実行。

# hypervisorlaunchtypeを切り替える
bcdedit /set hypervisorlaunchtype auto

4. 再起動&Docker起動

マウント確認.png
PCの再起動後にDockerを起動したところ、無事に起動。コンテナも問題なく起動できました。

補足

■bcdeditとかhypervisorlaunchtypeって何?

bcdedit:PC起動時の情報(BCD)を確認するためのコマンド
hypervisorlaunchtype:Hyper-Vの有効/無効の設定値

先程Powershellで実行したのは、bcdeditコマンドで設定値を確認して、Hyper-Vを有効に設定した、ということですね。

参考:
■Windowsのbcdeditでブートメニューの表示順序やデフォルトを変更する
 https://www.atmarkit.co.jp/ait/articles/0905/08/news096.html
■bcdeditでブート構成情報をバックアップ/リストアする
 https://www.atmarkit.co.jp/fwin2k/win2ktips/1157bcdedit2/bcdedit2.html
■他の仮想環境を利用するためにHyper-Vを一時的に無効にする
 https://www.atmarkit.co.jp/ait/articles/1511/13/news032.html

■さっきHyper-Vを有効にしなかったっけ...?

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All のコマンドと
bcdedit /set hypervisorlaunchtype auto のコマンドって何が違うのか?
これについては、前者はHyper-Vの有効/無効の設定で、後者はHyper-Vの起動設定ではないか
そのため、hypervisorlaunchtype auto が autoになっていても
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-Vの設定がOFFなら
dockerは使えないのではないかと考えました。

検証
1.まずHyper-Vを無効化&再起動

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

2.再起動後、値を確認。

(画像)
Hyper-Vはチェックが外れている。

3.bcdeditコマンドを確認

→hypervisorlaunchtypeの値がなかった。

4.この状態でdockerを起動するとエラーが表示された

hypervisorlaunchtypeの値はHyper-Vが有効になっていないと表示されないようです。

■トラブルから理解するHyper vの基礎 P8
 https://www.slideshare.net/NaokiAbe/hyper-v-25767921

5.Hyper-Vを有効にしたのち、再起動。bcdeditの値を確認。

hypervisorlaunchtype Auto になっていた。

6.dockerを起動。

マウント確認.png
無事に起動。

以上のことから、Dockerを使うときはWindowsのHyper-Vの設定ON→hypervisorlaunchtypeがAutoとなっている必要がありそうです。

またDockerが使えるようになったので、また開発していきたいと思います!
それでは!

参考

■Logs and troubleshooting
 https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled
■Windows 10 の役割を PowerShell で有効/無効にする
 http://www.vwnet.jp/windows/w10/WindowsOptionalFeature.htm
■【Docker Desktop】エラーで起動できない場合の対策
 https://algorithm.joho.info/programming/docker-for-windows-hardware-assisted-virtualization-and-data-execution-protection-must-be-enabled-in-the-bios/
■Windows 10で仮想化プラットフォーム「Hyper-V」を有効にする
 https://www.atmarkit.co.jp/ait/articles/1806/25/news026.html

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6